এখানে একটি বিভ্রান্তি রয়েছে কারণ এখানে কেবল একটি নেই zgrep
। আমি আমার সিস্টেমে দুটি সংস্করণ আছে, zgrep
থেকে gzip
এবং zgrep
থেকে zutils
। পূর্ববর্তীটি কেবল একটি মোড়ক স্ক্রিপ্ট যা কল করে gzip -cdfq
। এটি -r, --recursive
স্যুইচ সমর্থন করে না । 1
দ্বিতীয়টি একটি c++
প্রোগ্রাম এবং এটি বিকল্পটিকে সমর্থন করে -r, --recursive
।
দৌড়ানোটি zgrep --version | head -n 1
তাদের মধ্যে কোনটি ডিফল্ট তা (যদি থাকে তবে) প্রকাশ করবে:
zgrep (gzip) 1.6
মোড়ক লিপি,
zgrep (zutils) 1.3
হয় cpp
এক্সিকিউটেবল।
যদি আপনার পরে থাকে তবে আপনি চালাতে পারেন:
zgrep 'pattern' -r --format=gz /path/to/dir
যাইহোক, প্রস্তাবিত হিসাবে, find
+ এর zgrep
উভয় সংস্করণের সাথে সমানভাবে ভাল কাজ করবে zgrep
:
find /path/to/dir -name '*.gz' -exec zgrep -- 'pattern' {} +
যদি zgrep
আপনার সিস্টেমটি থেকে অনুপস্থিত থাকে (অত্যন্ত সম্ভাবনা নেই) আপনি এটি ব্যবহার করে দেখতে পারেন:
find /path/to/dir -name '*.gz' -exec sh -c 'gzip -cd "$0" | grep -- "pattern"' {} \;
তবে একটি বড় ক্ষতি রয়েছে: ম্যাচের লাইনে কোনও ফাইলের নাম চাপানো না থাকায় ম্যাচগুলি কোথায় তা আপনি জানতে পারবেন না।
1: কারণ এটি সমস্যাযুক্ত হবে
zgrep
:zgrep - search possibly compressed files for a regular expression