Eu tenho uma hierarquia de diretórios que contém numerosos .gz
arquivos. Eu quero ser capaz de recursivamente grep-los para a string "foo". Pelo que li on-line, o seguinte deve funcionar:
zgrep -R -H "foo" .
No entanto, isso nunca retorna nenhum resultado. Se eu substituir o ponto pelo nome de um arquivo, ele funciona. Por exemplo,
zgrep -R -H "foo" myFile.gz
no entanto, obviamente, isso não será mais recursivo.
Eu sei que "foo" está em alguns dos arquivos porque o seguinte comando retorna muitos resultados:
find . -iname "*.gz" | xargs zgrep "output" | less
Alguém sabe porque meu comando zgrep recursivo não está funcionando. Estou em uma caixa linux RHEL
fonte
zsh: no matches found: *.gz
Você tem que instalar zutils. Isso substituirá o zgrep padrão e limitado do sistema por um sistema recursivo.
Nos sistemas baseados no Debian, você executa
apt-get install zutils
então você podezgrep -rH myword .
e use a maioria dos outros parâmetros do grep que você conhece e ama.fonte
A maneira que eu costumo fazer é:
Se esse comando retornar "Argument list too long", tente desta forma:
fonte
Usar peneirar - Está Super rápido .
sift -z foo
-z
é para descompactar gzips, ele desce em subdiretórios por padrão. Mostra nomes de arquivos também por padrão-H
opção).PS. Graças à sua pergunta, descobri essa ferramenta hoje. Apenas battletested-lo, além da funcionalidade que você precisa, eu tenho uma aceleração de 5x em alguns logs de produção quando se compara a
zgrep
.fonte