zgrep -e "the regexp you search" *
poderia ser a resposta. O zgrep faz a descompactação para você, se necessário, deixando os arquivos intocados e executa o grep.
Isso está no Ubuntu 12.04. Eu tenho um aplicativo baseado em webkit personalizado onde "navegador" salva monte de arquivos de cache. Ao triar os problemas, tenho que inspecionar o cache. O diretório de cache contém muitos arquivos de diferentes tipos sem nenhuma extensão de arquivo. Alguns desses arquivos são compactados e alguns deles não são. O objetivo final é inspecionar o conteúdo de arquivos de texto como javascript e css.
Eu estou tentando escrever um script de shell que pode "detectar" que o arquivo é um arquivo compactado e expandir o arquivo. Enfrentando dois problemas particularmente
Se isto (usando comandos grep e file) não for o melhor caminho, por favor sugira também uma alternativa.
No exemplo a seguir, o script de shell deve expandir automaticamente 1077572923. Qualquer extensão ou nenhuma extensão fará no arquivo expandido.
Saída do comando ls -l
-rw------- 1 <user> <user> 213 Apr 28 14:19 1011858703
-rw------- 1 <user> <user> 364 Apr 28 14:19 1040171657
-rw------- 1 <user> <user> 66K Apr 28 14:19 1077572923
E o arquivo * mostra a saída como
1011858703: GIF image data, version 89a, 13 x 13
1040171657: GIF image data, version 89a, 22 x 19
1077572923: gzip compressed data, from FAT filesystem (MS-DOS, OS/2, NT)
zgrep -e "the regexp you search" *
poderia ser a resposta. O zgrep faz a descompactação para você, se necessário, deixando os arquivos intocados e executa o grep.
Tags bash gzip linux ubuntu shell-script