O comando zgrep
é muito útil para grepping em arquivos compactados e evita a necessidade de canalizar zcat
para grep
. Você também não precisa usar o loop for para criar uma lista de arquivos por globbing ( correspondência de padrões de shell).
zgrep U2779897722719715411 *.log.gz >> sara.log
Esse comando exibirá o nome do arquivo e a linha contendo U2779897722719715411 separada por um caractere :
.
Se você não quiser o prefixo do nome do arquivo, poderá usar a opção -h
para zgrep
:
zgrep -h U2779897722719715411 *.log.gz >> sara.log
Isso também pode ser obtido com um loop, mas evite usar ls
e execute o redirecionamento para o arquivo após a conclusão do loop:
for i in *.log.gz ; do zgrep U2779897722719715411 "$i" ; done >> sara.log
Como alternativa, se você quiser apenas o nome do arquivo dos arquivos que contêm essa string de usuário U2779897722719715411, você pode usar a opção -l
para zgrep
em qualquer um dos comandos acima:
zgrep -l U2779897722719715411 *.log.gz >> sara.log
ou
for i in *.log.gz ; do zgrep -l U2779897722719715411 "$i" ; done >> sara.log