如何在目录/子目录中搜索PDF文件的内容?我正在寻找一些命令行工具。看来grep
无法搜索PDF文件。如何搜索多个pdf文件的内容?
回答
你的分配应提供一个名为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
提供。)
这种方法,使用pdftotext
和grep
,拥有超过pdfgrep
一个优势,如果你想使用GNU grep
的功能,pdfgrep
不支持。 注意:pdfgrep-1.3.x支持-C
选项用于打印上下文行。
这可以工作,但不会显示匹配的文件名。任何想法? – 2012-11-30 16:35:09
@Kurt Pfeifle由于`grep`过滤打印的文件名,编辑“(由-kp-编辑)”不起作用。 – 2013-08-13 09:07:43
@sjr否,而`pdfgrep`解决方案对于真正快速和简单的搜索是很好的,通常我想获得一些上下文,因为单行不会有足够的帮助 - 所以添加到此答案中:例如,你可以在“你的模式”之前添加-C5选项,以包括5行上下文到输出 - pdfgrep不支持这个 – 2013-10-14 18:58:59
你需要一些工具,如pdf2text首先将你的pdf转换成文本文件,然后在文本内搜索。 (你可能会错过一些信息或符号)。
如果您使用的是编程语言,可能为此编写了pdf库。例如http://search.cpan.org/dist/CAM-PDF/ Perl的
尝试像上面
我做了这个破坏性的小脚本。玩得开心。
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
}
如果你想看看下面的命令与pdftotext使用的文件名:
find . -name '*.pdf' -exec echo {} \; -exec pdftotext {} - \; | grep "pattern\|pdf"
Recoll是用于Unix/Linux的一个梦幻般的全文GUI搜索应用程序,支持数十种不同的格式,包括PDF。它甚至可以将查询的确切页码和搜索项传递给文档查看器,从而允许您从GUI中直接跳转到结果。
Recoll还附带一个可行的命令行界面和一个web-browser interface。
有一个开放源码的公共资源的grep工具crgrep其中的PDF文件,还包括其他资源,比如内容嵌套在档案馆,数据库表,图像元数据,POM文件相关性和网络资源的范围内搜索 - 这些包括递归和组合搜索。
“文件”选项卡下的完整说明几乎涵盖了该工具支持的内容。
我开发了crgrep作为开源工具。
我pdfgrep(1.3.0)的实际版本允许如下:
pdfgrep -HiR 'pattern' /path
在做pdfgrep --help
:
- H:打印的文件名每场比赛。 i:忽略大小写区分。
- R:递归搜索目录。
它在我的Ubuntu上运行良好。
我喜欢@ sjr的回答,但我更喜欢xargs vs -exec。我发现xargs更通用。例如在-P的情况下,我们可以利用多个CPU来实现这一点。
find . -name '*.pdf' | xargs -P 5 -I % pdftotext % - | grep --with-filename --label="{}" --color "pattern"
首先转换您的所有PDF文件到文本文件:
for file in *.pdf;do pdftotext "$file"; done
然后用grep
正常。这是非常好的,因为当你有多个查询和大量的PDF文件时它很快。
- 1. 搜索多个pdf文件的内容并返回pdf的文件名和匹配内容?
- 2. Windows搜索PDF内容
- 3. 如何在多个Subversion版本库中搜索文件内容?
- 4. 索引/搜索PDF内容使用Solr
- 5. 如何在Ubuntu Linux中搜索文件内的内容?
- 6. PHP - 搜索文件的内容
- 7. 如何搜索多个.php文件?
- 8. 根据字数搜索多个pdf文件中的单词和索引pdf
- 9. 如何在Windows上一起搜索多个Powerpoint和PDF文件中的文本?
- 10. 如何在音频文件/流内搜索内容?
- 11. 如何索引pdf的内容与SolrJ?
- 12. 如何搜索PDF?
- 13. Oracle文本内容搜索?
- 14. 如何在pdf内容(C#)中搜索字符串?
- 15. 在c#中搜索文件内容#
- 16. 在iphone上搜索文件内容
- 17. 使用Java搜索文件内容?
- 18. 搜索多个SDF文件
- 19. 如何搜索和打开applescript上的内容文件?
- 20. 如何搜索和匹配文件中的内容?
- 21. 如何搜索文件内容中的单词?
- 22. 如何搜索历史上的mercurial文件内容?
- 23. 如何在lua中搜索文件的内容
- 24. 如何(递归)搜索Windows 7中的所有文件内容?
- 25. C:如何在搜索后打印文件的内容
- 26. 搜索pdf文件中的文字
- 27. 如何一次搜索并替换多个Wordpress文章的内容?
- 28. Drupal 7索引pdf文件搜索
- 29. 如何检索COD文件的内容?
- 30. 文本搜索PDF
由于PDF是一种二进制格式,因此Grep不会工作,并且文本通常以各种方式进行压缩或编码。 – 2011-01-10 07:37:13
这是一个GUI解决方案:Adobe Reader,请参阅https://wikispaces.psu.edu/display/training/Search+for+Text+in+Multiple+PDFs+with+Adobe+Reader – 2012-08-01 13:44:55
相关:http:// unix .stackexchange.com/questions/6704/grep-pdf-files – Flow 2013-06-22 12:59:31