Procura por arquivos tar por um padrão e imprime o caminho completo do que é encontrado

0

Eu tenho uma árvore de diretórios com muitos arquivos tar. Cada arquivo tar contém muitos outros arquivos. Quero pesquisar em todos os arquivos tar de um determinado padrão e imprimir o caminho completo de todos os arquivos dentro de um tar localizados.

Cheguei até aqui: find . -type f -name '*.tar' -exec tar tf {} \; | egrep '<pattern>'

Agora, meu problema é que o comando acima apenas imprime o nome do arquivo dentro do tar que ele encontra. Ou seja, a saída do acima é:
pattern.jpg foundMe.txt

Eu gostaria que a saída contivesse também o caminho completo e o nome do tar onde o arquivo foi encontrado. Como eu faria isso?

Obrigado!

    
por Yechiel Labunskiy 10.11.2014 / 12:32

1 resposta

0

Claro, perdeu o enredo em algum lugar ao longo da linha :$

Eu tive um problema semelhante com arquivos jar, procurando por classes java. Usado para fazer algo assim: capturar a saída de cada tar tf|grep <pattern> e, em seguida, verificar se a saída contém um valor - em caso afirmativo, nome de impressão ( $f ) e valor ( $p ):

find . -name '*.tar' -type f|while read f; do p="$(tar tf $f|egrep <pattern>)"; [ -n "$p" ] && echo -e "$f\n$p" ; p=""; done

Comutou a ordem de encontrar argumentos - mais barato ver o nome do arquivo antes do tipo de arquivo.

    
por 10.11.2014 / 14:00

Tags