উত্তর:
ওয়েল, জেনেরিক কেস যে স্ট্যান্ডআউটে লেখার জন্য যে কোনও কমান্ডের সাথে কাজ করে তা ব্যবহার করা হয় xargs, যা আপনাকে কমান্ডের শেষের সাথে অনেকগুলি কমান্ড-লাইন যুক্তি যুক্ত করতে দেয়:
$ find … | xargs grep 'search'
বা আপনার grepলাইনে কমান্ডটি ব্যাকটিক্স বা এম্বেড করার জন্য $(), যা কমান্ডটি চালাবে এবং এর আউটপুটটি প্রতিস্থাপন করবে:
$ grep 'search' $(find …)
নোট করুন যে ফাইলের নামগুলিতে শ্বেত স্পেস বা কিছু অন্যান্য "অদ্ভুত অক্ষর" রয়েছে ( \'"xargs এর \[*?জন্য $(find …)) যদি এই আদেশগুলি কাজ করে না ।
তবে findপ্রদত্ত যুক্তিগুলিতে কোনও প্রোগ্রাম চালানোর দক্ষতার নির্দিষ্ট ক্ষেত্রে অন্তর্নির্মিত:
$ find … -exec grep 'search' {} \;
এর মধ্যে -execএবং এর মধ্যেকার সমস্ত ;কিছুই হ'ল আদেশ কার্যকর করতে; {}দ্বারা পাওয়া ফাইলের নাম দ্বারা প্রতিস্থাপিত হয় find। এটি grepপ্রতিটি ফাইলের জন্য পৃথক সম্পাদন করবে ; যেহেতু grepঅনেকগুলি ফাইলের নাম নিতে পারে এবং সেগুলি সন্ধান করতে পারে, তাই আপনি সমস্ত মিলে যাওয়া ফাইলের নাম একবারে পাস ;করার +জন্য এটি অনুসন্ধান করতে পারেন grep:
$ find … -exec grep 'search' {} \+
find ... -type f -print0 | xargs -r0 grep 'search' /dev/null। Qed। যদিও -exec +খুব দক্ষ, এটি অনুসন্ধানের সমস্ত সংস্করণে বিদ্যমান নেই।
$ find … -exec grep 'search' {} \+রূপ অনেক দ্রুততম।
কিছু সংস্করণ grep(যেমন- এম্বেডড লিনাক্স বা বিএসডি বা ম্যাক ওএস এক্স) এর ক্ষেত্রে -rপুনরাবৃত্ত অনুসন্ধান করতে একটি বিকল্প রয়েছে। ওপেনবিএসডি-তে, ব্যবহার করুন -R(এবং --excludeনীচের উদাহরণের মতো নেই)। এটি এর findসাথে সহজ সংমিশ্রণগুলি জুড়ে grep।
যদি আপনার বাস্তবায়নে -Rপতাকা না থাকে , বা যদি আপনি ফ্যানসিয়ার ফাইলের মিলের মানদণ্ড চান তবে আপনি এটিকে কার্যকর করার জন্য -execপ্রাথমিকটি ব্যবহার করতে পারেন । কিছু পুরানো বাস্তবায়ন সমর্থন করে না … ; এই সিস্টেমে এর পরিবর্তে একটি ব্যবহার করুন (এটি প্রতি ফাইলের জন্য একবার কল করবে , তাই এটি ধীর হবে তবে অন্যথায় ফলাফলটি একই হবে)। কোনও একক ফাইলে ফোন করা সত্ত্বেও ফাইলটির নামটি দেখানোর কারণটি নোট করুন (জিএনইউ গ্রেপ এবং ফ্রিবিএসডি / নেটবিএসডি / ওএসএক্স গ্রেপ একই প্রভাব অর্জনের জন্য একটি বিকল্প রয়েছে)।findgrepfind-exec+;+grep/dev/nullgrep-H
find . -type f -name '*.o' -prune -o -exec grep 'needle' /dev/null {} +
grep -r --exclude='*.o' 'needle' .
GNU grep-Hসর্বদা ফাইলের নাম মুদ্রণের বিকল্প রয়েছে ।