Piping pdffonts para grep

1

Por isso, quero usar o grep para listar os nomes de arquivo dos arquivos PDF que correspondem à string de pesquisa "Tipo 1C".

grep deve obter os dados de pdffonts , mas quando executo esta sintaxe, ela apenas executa pdffonts normalmente.

find . -type f -iname "*.pdf" -print0 -exec pdffonts {} \; |xargs -0 grep -c -l "Type 1C"

Quando adiciono - após {} , recebo o arquivo de ajuda de pdffonts , o que significa que ele não suporta esse argumento.

Mas como posso canalizar pdffonts para grep então?

    
por Roy 04.07.2013 / 21:01

1 resposta

2

Há '-----------------------' incluído no fluxo de saída e ele fica interpretado como um interruptor de comando que estraga tudo. Então, remova os traços traquinas usando tr antes de continuar o pipeline.

find . -type f -iname "*.pdf"  -print0 -exec pdffonts {} \; | tr -d '-' | xargs -0 | grep 'Type 1'
HelveticaNeueLight                  Type 1            yes no  no      18  0
HelveticaNeueRoman                  Type 1            yes no  no      22  0
HelveticaNeueMedium                 Type 1            yes no  no      26  0
HelveticaNeueLight                  Type 1            yes no  no      18  0
HelveticaNeueRoman                  Type 1            yes no  no      22  0
HelveticaNeueMedium                 Type 1            yes no  no      26  0
HelveticaNeueLight                  Type 1            yes no  no      18  0
HelveticaNeueRoman                  Type 1            yes no  no      22  0
HelveticaNeueMedium                 Type 1            yes no  no      26  0
HelveticaNeueLight                  Type 1            yes no  no      18  0
HelveticaNeueRoman                  Type 1            yes no  no      22  0
HelveticaNeueMedium                 Type 1            yes no  no      26  0

Você não pode usar 'grep -l' porque não existe mais o conceito de arquivos, tudo que sai de lá é um fluxo de texto. Se você quiser manter a lista de arquivos como um índice, provavelmente acabará com um loop for.

    
por ppetraki 04.07.2013 / 21:27