w najbliższych trochę późno na to, miał podobny problem i był w stanie r esolve za pomocą;
zcat -r /some/dir/here | grep "blah"
Jak szczegółowo tutaj;
http://manpages.ubuntu.com/manpages/quantal/man1/gzip.1.html
to jednak nie zobaczyć oryginalny plik, który wynika z dopasowaną, zamiast wykazujące „(standardowe wejście)”, jak to idzie z rury. zcat nie obsługuje również wypisywania nazwy.
Pod względem wydajności, to właśnie otrzymaliśmy;
$ 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
Jak widać, przy użyciu metody find|zcat
jest znacznie wolniejsze niż przy użyciu zcat -r
gdy ma do czynienia z nawet niewielkiej ilości plików. Nie mogłem również wytworzyć zcat nazwy pliku (użycie nazwy -v
spowoduje wyświetlenie nazwy pliku, ale nie w każdym wierszu). Wydaje się, że obecnie nie ma narzędzia, które zapewni zarówno szybkość, jak i spójność nazwy z grep (tj. Opcja -H
).
Jeśli chcesz zidentyfikować nazwę pliku, do którego należy wynik, musisz napisać własne narzędzie (można zrobić w 50 wierszach kodu Pythona) lub użyć wolniejszej metody. Jeśli nie musisz identyfikować nazwy, użyj zcat -r
.
Nadzieja to pomaga
FWIW, mój zgrep nie obsługuje -R – ZombieDev
@Ned Batchelder, Dzięki za podanie kierunku. Ale dla mnie następujące działające opcje zgrep "pliki" wzór – hiren
'zgrep -R --include = \ *. Gz -H" wzór "' na zsh – blacktooth