Venendo in un po 'in ritardo su questo, ha avuto un problema simile ed era in grado di r esullare usando;
zcat -r /some/dir/here | grep "blah"
Come indicato di seguito;
http://manpages.ubuntu.com/manpages/quantal/man1/gzip.1.html
Tuttavia, questo non mostra il file originale che il risultato abbinato da, mostrando invece "(standard input)", come è proveniente da un tubo. zcat non sembra supportare anche l'uscita di un nome.
In termini di prestazioni, questo è ciò che abbiamo ottenuto;
$ alias dropcache="sync && echo 3 > /proc/sys/vm/drop_caches"
$ find 09/01 | wc -l
4208
$ du -chs 09/01
24M
$ dropcache; time zcat -r 09/01 > /dev/null
real 0m3.561s
$ dropcache; time find 09/01 -iname '*.txt.gz' -exec zcat '{}' \; > /dev/null
0m38.041s
Come si può vedere, utilizzando il metodo find|zcat
è significativamente più lento rispetto all'utilizzo zcat -r
quando si tratta di anche un piccolo volume di file. Non ero nemmeno in grado di far vedere a zcat il nome del file (usando -v
apparirà il nome del file, ma non su ogni singola riga). Sembrerebbe che al momento non ci sia uno strumento che fornisca sia la velocità sia la coerenza del nome con grep (cioè l'opzione -H
).
Se è necessario identificare il nome del file a cui appartiene il risultato, sarà necessario scrivere il proprio strumento (potrebbe essere eseguito in 50 righe di codice Python) o utilizzare il metodo più lento. Se non è necessario identificare il nome, utilizzare zcat -r
.
Spero che questo aiuti
FWIW, il mio zgrep non supporta -R – ZombieDev
@Ned Batchelder, Grazie per aver dato una direzione. Ma secondo me ha funzionato zgrep opzioni file "pattern" – hiren
'zgrep -R --include = \ *. Gz -H" pattern "' su zsh – blacktooth