如何在目录/子目录中搜索PDF文件的内容?我在找一些命令行工具。grep似乎不能搜索PDF文件。
当前回答
还有另一个实用程序叫做ripgrep-all,它是基于ripgrep的。
它不仅可以处理PDF文档,比如Office文档和电影,而且作者声称它比pdfgrep更快。
递归搜索当前目录的命令语法,第二个命令只限制PDF文件:
rga 'pattern' .
rga --type pdf 'pattern' .
其他回答
首先将所有pdf文件转换为文本文件:
for file in *.pdf;do pdftotext "$file"; done
然后像往常一样使用grep。这是特别好的,因为当您有多个查询和许多PDF文件时,它是快速的。
试着在一个简单的脚本中使用'acroread',就像上面那样
还有pdfgrep,它做的正是它的名字所暗示的。
pdfgrep -R 'a pattern to search recursively from path' /some/path
我用它做过简单的搜索,效果很好。
(Debian、Ubuntu和Fedora中都有软件包。)
从1.3.0版本开始,pdfgrep支持递归搜索。这个版本从Ubuntu 12.10 (Quantal)开始在Ubuntu中可用。
你需要一些工具,如pdf2text,首先将pdf转换为文本文件,然后在文本中搜索。(您可能会错过一些信息或符号)。
如果你正在使用一种编程语言,很可能有专门为此目的编写的pdf库。例如:http://search.cpan.org/dist/CAM-PDF/ for 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
}
推荐文章
- 如何强制从另一个SSH会话分离屏幕?
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- Linux Bash中双&和分号有什么区别?
- 在SSH会话中查找客户端的IP地址
- C++ Linux的想法?
- 如何为Fedora安装g++ ?
- Linux删除大小为0的文件
- Spring引导应用程序作为服务
- 如何重定向标准derr和标准输出到不同的文件在同一行脚本?
- Windows和Linux上的c++编译:ifdef开关
- Linux: kill后台任务
- 如何修改Linux系统中打开文件的数量限制?
- PowerShell等价于grep -f
- errno线程安全吗?
- 如何在Linux中永久导出变量?