如何在目录/子目录中搜索PDF文件的内容?我在找一些命令行工具。grep似乎不能搜索PDF文件。
当前回答
使用pdfgrep:
pdfgrep -HinR 'FWCOSP' DatenModel/
在这个命令中,我在DatenModel/文件夹中搜索单词FWCOSP。
正如你在输出中看到的,你可以有文件名和行号:
我使用的选项是:
-i : Ignores, case for matching
-H : print the file name for each match
-n : prefix each match with the number of the page where it is found
-R : same as -r, but it also follows all symlinks.
其他回答
你的发行版应该提供一个名为pdftotext的实用程序:
find /path -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep --with-filename --label="{}" --color "your pattern"' \;
如果要将pdftotext输出到标准输出,而不是输出到文件,则必须使用“-”。 ——with-filename和——label=选项将把文件名放在grep的输出中。 可选的——color标志很好,它告诉grep在终端上使用颜色输出。
(在Ubuntu中,pdftotext是由xpdf-utils或poppler-utils包提供的。)
如果您想使用GNU grep中pdfgrep不支持的特性,这种使用pdftotext和grep的方法比pdfgrep更有优势。注意:pdfgrep - 1.3。x支持-C选项打印上下文行。
我的实际版本的pdfgrep(1.3.0)允许以下:
pdfgrep -HiR 'pattern' /path
当执行pdfgrep——help时:
H:打印每个匹配项的文件名。 i:忽略大小写区别。 R:递归搜索目录。
它在我的Ubuntu上运行得很好。
如果你想用pdftotext查看文件名,使用以下命令:
find . -name '*.pdf' -exec echo {} \; -exec pdftotext {} - \; | grep "pattern\|pdf"
试着在一个简单的脚本中使用'acroread',就像上面那样
我写了这个破坏性的小脚本。祝你玩得开心。
function pdfsearch()
{
find . -iname '*.pdf' | while read filename
do
#echo -e "\033[34;1m// === PDF Document:\033[33;1m $filename\033[0m"
pdftotext -q -enc ASCII7 "$filename" "$filename."; grep -s -H --color=always -i $1 "$filename."
# remove it! rm -f "$filename."
done
}
推荐文章
- 在Bash中检查变量是否存在于列表中
- 查看PS命令的全部输出
- 在Windows中有像GREP这样的模式匹配实用程序吗?
- 如何从命令行将每两行合并为一行?
- Linux命令将域名转换为IP
- 强制打开“另存为…”弹出打开文本链接点击PDF在HTML
- 如何从命令行在windows中找到mysql数据目录
- 匹配前后的Grep字符?
- (grep)正则表达式匹配非ascii字符?
- 有效地测试Linux上的端口是否打开?
- 如何从另一个文件A中删除文件B中出现的行?
- 对以制表符分隔的文件进行排序
- 使用sudo时未找到命令
- 当有命令行参数时,如何使用GDB分析程序的核心转储文件?
- 如何强制从另一个SSH会话分离屏幕?