Como posso encontrar todos os PDFs de vários arquivos zip que contêm o termo de pesquisa?

3

Dado:

  • Um diretório com arquivos ZIP 1..n de nomes aleatórios (todos terminados com .zip)
    • Cada arquivo zip contém arquivos 1..n PDF de nomes aleatórios (todos terminados com .pdf)
    • Todos os PDFs são da mesma origem e, em certa medida, são comparáveis formatados.
    • Os PDFs não são texto prosa, mas sim faturas, listas de inventário, etc. (também conhecidos como formulários e tabelas; Os PDFs podem ser pesquisados quando eu os abro em um visualizador de PDF.)
  • Um termo de pesquisa, ou seja, um número de item de estoque ou um número de fatura

Desejado:

  • Uma maneira de encontrar / listar todos os PDFs que contêm o termo de pesquisa fornecido.
  • de preferência com ferramentas linux existentes.
por KFleischer 11.10.2017 / 07:37

1 resposta

1

Você pode converter o PDF em texto e aplicar grep nesse texto:

#!/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
    
por muru 12.10.2017 / 07:32