Grep uma string do mesmo arquivo em vários arquivos .tar.gz [duplicados]

0

Eu tenho vários arquivos * .tar.gz. Todos eles contêm arquivos com nome de arquivo a, b e c. Existe uma maneira de grep string 'foo' somente do arquivo b sob estes múltiplos arquivos * .tar.gz sem extrair os arquivos.

    
por guest1201 14.09.2016 / 18:16

2 respostas

6

Assumindo que "sem extrair" você quer dizer "sem salvar os arquivos extraídos no disco":

for file in *.tar.gz ; do
    tar xzOf $file b | grep --label=$file/b -H foo
done

opções de tar:

x extrair z gunzip antes de extrair O dump para stdout em vez de criar o arquivo (letra maiúscula oh, não o número zero)
f do arquivo tar especificado

opções grep (sugeridas por JJoao)

--label=... use o rótulo especificado como o nome do arquivo% -H print filename para cada correspondência

    
por 14.09.2016 / 19:10
1

O comando zgrep funciona em arquivos .tar.gz sem extrair o conteúdo.

    
por 14.09.2016 / 18:36