यदि सब कुछ एक ही निर्देशिका में है, तो आप कर सकते हैं:
for file in *fileprefix*; do
grep 'search string' "$file" | tail -1
done
यदि ये बड़ी फाइलें हैं, तो हो सकता है tacकि फाइल को रिवर्स ऑर्डर (अंतिम पंक्ति पहले) में प्रिंट करके और फिर grep -m1पहली घटना का मिलान करने के लिए चीजों को गति देने लायक हो । इस तरह, आप पूरी फ़ाइल पढ़ने से बचते हैं:
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