在一组 pdf 文件中查找单词或一组单词

在一组 pdf 文件中查找单词或一组单词

假设我有一个目录Note_De_cours包含其他8个目录,即

Semaine_1  Semaine_3  Semaine_5  Semaine_7
Semaine_2  Semaine_4  Semaine_6  Semaine_8

每个目录都包含一些 pdf 文件。是否有命令行可以同时在每个 pdf 中搜索一个单词或一组单词。打开pdf,按下Ctrl + f并搜索单词,这很烦人。我想过使用grep,但我真的不是专家。也许还有其他一些最优化的方法可以做到这一点。

我想留下来Note_De_Cours并申请pdfgrep同时查看所有 pdf 文件。我希望命令告诉我哪个文件包含我想要的单词或单词集。我怎样才能做到这一点?

编辑

我可以循环执行这个命令:find elem -iname '*.pdf' -exec pdfgrep "baysien optimal" {} +onelem吗?就像是for elem in ...; do find elem -iname '*.pdf' -exec pdfgrep "baysien optimal" {} +

我已经完成了for i in 1 2 3 4 5 6 7 8; do find Semaine_$i -iname '*.pdf' -exec pdfgrep "taux" {} +; done,但它没有输出它来自的文件

答案1

代替

for i in 1 2 3 4 5 6 7 8; do  find Semaine_$i -iname '*.pdf' -exec pdfgrep "taux" {} +; done

如果要打印文件的名称,请在 find 上使用 -print (在匹配项后打印名称)或在 grep 上使用 -l (打印名称而不是匹配项):

find Semaine_[1-8] -iname '*.pdf' -exec pdfgrep "taux" {} \; -print

或者

find Semaine_[1-8] -iname '*.pdf' -exec pdfgrep -l "taux" {} \;

此外,pdfgrep通过标志具有内置的递归功能-r,因此您可以简单地执行以下操作:

pdfgrep -r -l "taux" Semaine_[1-8]

答案2

直接使用 grep 命令不会得到结果。因为linux最小包中包含的应用程序只能处理vi和nano可以读取的文件。 (grep、awk 等)对于 PDF 等特殊文件格式,有许多工具和替代品。通过安装 Dspace 等开源归档软件,您可以在浏览器中搜索和编目所有 PDF。通过添加模块,可以加强PDF操作。或者,您可以使用基于命令行的应用程序将 PDF 文件转换为纯文本文件,例如 pdftotext。 pdftotext 的搜索命令示例:

pdftotext /file/semaine.pdf - | grep -n -i "Semaine"

-n:打印行号。 -我:不区分大小写字母。

wc -l通过在命令末尾添加,您可以查出​​您要查找的术语出现了多少次。

您可以使用在管道之后添加的 awk 和导数参数获得更有效的结果。

正如我上面提到的,方法不止一种。我可以建议这两种不同的选择。

相关内容