Questo è ciò che ho digitato e dovevo ottenere solo il registro dell'utente nel "" . Ma ho tutti i log nel server:
for i in `ls *.log.gz`; do zcat $i |  grep "U2779897722719715411" >> sara.log;  done ; *
Cosa devo cambiare in questo ciclo per trovare solo log con questa parola chiave?
Grazie.
Risposta accettata:
 Il zgrep Il comando è molto utile per eseguire il grepping di file compressi ed evita la necessità di reindirizzare zcat a grep . Inoltre, non è necessario utilizzare il ciclo for per creare un elenco di file mediante globbing (corrispondenza del modello di shell).
zgrep U2779897722719715411 *.log.gz >> sara.log
 Quel comando genererà il nome del file e la riga contenente U27798977722719715411 separati da un : carattere.
 Se non vuoi il prefisso del nome del file, puoi usare il -h opzione per zgrep :
zgrep -h U2779897722719715411 *.log.gz >> sara.log
 Questo può essere ottenuto anche con un ciclo, ma evita di usare ls , ed eseguire il reindirizzamento al file al termine del ciclo:
for i in *.log.gz ; do zgrep U2779897722719715411 "$i" ; done >> sara.log
 In alternativa, se vuoi solo il nome del file dei file che contengono quella stringa utente U27798977722719715411, puoi usare il -l opzione per zgrep in uno dei comandi precedenti:
zgrep -l U2779897722719715411 *.log.gz >> sara.log
o
for i in *.log.gz ; do zgrep -l U2779897722719715411 "$i" ; done >> sara.log