এখানে একটি বিভ্রান্তি রয়েছে কারণ এখানে কেবল একটি নেই 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