如何从多个 zip 文件中找到包含搜索词的所有 PDF?

如何从多个 zip 文件中找到包含搜索词的所有 PDF?

鉴于:

  • 包含 1..n 个随机名称的 ZIP 文件的目录(所有文件均以 .zip 结尾)
    • 每个 zip 文件包含 1..n 个随机名称的 PDF 文件(均以 .pdf 结尾)
    • 所有 PDF 均来自同一来源,并且在某种程度上具有可比的格式。
    • PDF 不是散文,而是发票、库存清单等(又名表格和表格;当我在 PDF 查看器中打开它们时,PDF 是可搜索的。)
  • 搜索词,即库存商品编号或发票号码

通缉:

  • 查找/列出包含给定搜索词的所有 PDF 的方法。
  • 最好使用现有的 Linux 工具。

答案1

您可以将 PDF 转换为文本,然后对该文本应用 grep:

#!/bin/bash
for z in *.zip
do
  zipinfo -1 "$z" |  # Get the list of filenames in the zip file
    while IFS= read -r f
    do
      unzip -p "$z" "$f" | # Extract each PDF to standard output instead of a file
        pdftotext - - | # Then convert it to text, reading from stdin, writing to stdout
        grep -q 1234 && echo "$z -> $f" # And finally grep the text
    done
done

相关内容