如何在 PDF 文件中执行 grep 操作?

如何在 PDF 文件中执行 grep 操作?

有没有一种方法可以使用 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 文件并希望获得可靠的答案。

相关内容