Ada banyak kebingungan di sini karena tidak hanya ada satu zgrep
. Saya memiliki dua versi di sistem saya, zgrep
dari gzip
dan zgrep
dari zutils
. Yang pertama hanyalah skrip pembungkus yang memanggil gzip -cdfq
. Itu tidak mendukung -r, --recursive
saklar. 1
Yang terakhir adalah c++
program yang dan mendukung para -r, --recursive
pilihan.
Menjalankan zgrep --version | head -n 1
akan mengungkapkan yang mana (jika ada) dari mereka adalah default:
zgrep (gzip) 1.6
adalah skrip wrapper,
zgrep (zutils) 1.3
adalah cpp
executable.
Jika Anda memiliki yang terakhir, Anda dapat menjalankan:
zgrep 'pattern' -r --format=gz /path/to/dir
Bagaimanapun, seperti yang disarankan, find
+ zgrep
akan bekerja dengan baik dengan versi zgrep
:
find /path/to/dir -name '*.gz' -exec zgrep -- 'pattern' {} +
Jika zgrep
hilang dari sistem Anda (sangat tidak mungkin), Anda dapat mencoba:
find /path/to/dir -name '*.gz' -exec sh -c 'gzip -cd "$0" | grep -- "pattern"' {} \;
tetapi ada kelemahan utama: Anda tidak akan tahu di mana pertandingan tersebut karena tidak ada nama file yang ditambahkan ke baris yang cocok.
1: karena akan bermasalah
zgrep
:zgrep - search possibly compressed files for a regular expression