enz*_*tib 226
安装包pdfgrep,然后使用命令:
find /path -iname '*.pdf' -exec pdfgrep pattern {} +
Run Code Online (Sandbox Code Playgroud)
——————
最简单的方法:
pdfgrep 'pattern' *.pdf
pdfgrep 'pattern' file.pdf
Run Code Online (Sandbox Code Playgroud)
wag*_*wag 73
如果您已poppler-utils安装(Ubuntu 桌面上的默认设置),您可以即时“转换”它并将其通过管道传输到grep:
pdftotext my.pdf - | grep 'pattern'
Run Code Online (Sandbox Code Playgroud)
这不会创建 .txt 文件。
小智 24
pdfgrep正是为此目的而编写的,并且在 Ubuntu 中可用。
它试图与大多数兼容grep并因此提供“grep 的力量”,专门用于 PDF。这包括常见的 grep 选项,例如--recursive,--ignore-case或--color。
与此相反pdftotext | grep,pdfgrep可以输出匹配的页面数在性能方法,一般要快,当它没有搜索整个文档(如--max-count或--quiet)。
基本用法是:
pdfgrep PATTERN FILE..
Run Code Online (Sandbox Code Playgroud)
PATTERN您的搜索字符串和FILE文件名列表(或 shell 中的通配符)在哪里。
有关更多信息,请参阅联机帮助页。
不。
pdf 由数据块组成,其中一些是文本,一些是图片,还有一些是非常神奇的 XYZ(例如 .u3d 文件)。这些块大部分时间都是压缩的(例如,扁平,检查http://www.verypdf.com/pdfinfoeditor/compression.htm)。为了“grep”一个.pdf,你必须反转压缩,也就是提取文本。
您可以使用诸如pdf2text和 grep 结果之类的工具对每个文件执行此操作,也可以运行“索引器”(查看xapian.org或lucene),它会从 .pdf 文件中构建可搜索的索引,然后您可以使用搜索该索引器的引擎工具来获取pdf的内容。
但是不,您不能grep先提取文本,就不能pdf 文件并希望得到可靠的答案。
StackOverflow 上有一个重复的问题。那里的人提出了 harish.venkarts 答案的变体:
find /path -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep --with-filename --label="{}" --color "your pattern"' \;
Run Code Online (Sandbox Code Playgroud)
与这里的类似答案相比,这里的优势是--with-filenamegrep的标志。这在某种程度上也优于 pdfgrep,因为标准 grep 具有更多功能。
| 归档时间: |
|
| 查看次数: |
138156 次 |
| 最近记录: |