যদি সমস্ত কিছু একটি ডিরেক্টরিতে থাকে তবে আপনি এটি করতে পারেন:
for file in *fileprefix*; do
grep 'search string' "$file" | tail -1
done
যদি এগুলি বড় ফাইল হয় tac
তবে ফাইলটি বিপরীত ক্রমে (প্রথম লাইনটি প্রথমে) মুদ্রণ করে এবং তারপরে grep -m1
প্রথম উপস্থিতির সাথে মিল রেখে গতি বাড়িয়ে তোলা উচিত worth এইভাবে, আপনি পুরো ফাইলটি পড়তে হবে না:
for file in *fileprefix*; do
tac file | grep -m1 'search string'
done
এই দুজনেই ধরে নিয়েছে যে কোনও ডিরেক্টরি মিলছে না fileprefix
। যদি সেখানে থাকে তবে আপনি একটি ত্রুটি পাবেন যা আপনি কেবল উপেক্ষা করতে পারেন। যদি এটি কোনও সমস্যা হয় তবে কেবল ফাইলগুলির জন্য পরীক্ষা করুন:
for file in *fileprefix*; do
[ -f "$file" ] && tac file | grep -m1 'search string'
done
আপনার যদি প্রিন্ট করা ফাইলের নামও প্রয়োজন হয় তবে -H
প্রতিটি grep
অনুরোধে যুক্ত করুন। অথবা, যদি আপনি grep
এটি সমর্থন না করেন তবে এটি অনুসন্ধান করে বলুন /dev/null
। এটি আউটপুট পরিবর্তন করবে না তবে যেহেতু grep
একাধিক ফাইল দেওয়া হয়েছে তাই এটি প্রতিটি হিটের জন্য সর্বদা ফাইলের নাম মুদ্রণ করবে:
for file in *fileprefix*; do
grep 'search string' "$file" /dev/null | tail -1
done