有没有一种方法可以使用 grep 搜索 PDF 文件,而无需先在 Ubuntu 中转换为文本?
答案1
安装软件包pdfgrep
,然后使用命令:
find /path -iname '*.pdf' -exec pdfgrep pattern {} +
——————
最简单的方法:
pdfgrep 'pattern' *.pdf
pdfgrep 'pattern' file.pdf
答案2
如果您已经poppler-utils
安装(Ubuntu 桌面上默认),您可以即时“转换”它并将其通过管道传输到grep
:
pdftotext my.pdf - | grep 'pattern'
这不会创建 .txt 文件。
答案3
pdfgrep正是为了这个目的而编写的,并且可以在 Ubuntu 中使用。
它试图与大多数兼容grep
,从而提供“grep 的强大功能”,仅专门用于 PDF。其中包括常见的 grep 选项,例如--recursive
、--ignore-case
或--color
。
与 相比pdftotext | grep
,pdfgrep 可以以高性能的方式输出匹配的页码,并且当不需要搜索整个文档(例如--max-count
或--quiet
)时通常速度更快。
基本用法是:
pdfgrep PATTERN FILE..
其中PATTERN
是您的搜索字符串和FILE
文件名列表(或 shell 中的通配符)。
请参阅联机帮助页了解更多信息。
答案4
不。
pdf 由大量数据组成,其中一些是文本,一些是图片,还有一些非常神奇的奇特 XYZ(例如 .u3d 文件)。这些块大部分时间都被压缩(例如,扁平,检查http://www.verypdf.com/pdfinfoeditor/compression.htm)。为了“grep”一个 .pdf 你有反转压缩又称为提取文本。
您可以使用诸如pdf2text
和 grep 结果之类的工具对每个文件执行此操作,或者运行“索引器”(查看xapian.org或者卢塞恩)它会根据您的 .pdf 文件构建可搜索索引,然后您可以使用该索引器的搜索引擎工具来获取 pdf 的内容。
但不行,您不能grep
在不先提取文本的情况下获取 pdf 文件并希望获得可靠的答案。