鉴于:
- 包含 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