unzip -c \*.zip | grep yourtext
Você pode usar alguns regexes no comando grep para ajustar a string correspondente
Com base nos comentários abaixo, zgrep
seria a melhor opção.
Eu posso pesquisar através de um número de arquivos para uma determinada string pipelining comandos 'grep' e 'find'.
Agora, eu tenho 10 arquivos zip cada um dos quais arquivou muitos arquivos de texto. Existe alguma maneira que eu poderia procurar por uma string em todos os arquivos de texto arquivados em todos os arquivos zip sem extrair os arquivos zip?
Você também pode usar o comando zipgrep que está incluído no pacote unzip. Por exemplo:
for z in *.zip ; do zipgrep PATTERN $z |sed "s/^/$z: /" ; done
Este comando também fornece nomes de arquivos correspondentes dentro dos arquivos.
Monte os arquivos como diretórios usando AVFS ou zip de fusível . Ambos são sistemas de arquivos FUSE .
O AVFS fornece uma visualização do sistema de arquivos em ~/.avfs
, em que cada arquivo archive possui um diretório associado com o mesmo nome, além de um #
no final.
mountavfs
grep -r PATTERN ~/.avfs/$PWD/*.zip\#/
…
unmountavfs
O zip do fusível monta um zip em um diretório.
for z in *.zip; do mkdir "$z.d" && fuse-zip "$z" "$z.d"; done
grep -r PATTERN *.zip.z/
…
fusermount -u *.zip.d
rmdir *.zip.d