หากทุกอย่างอยู่ในไดเรกทอรีเดียวคุณสามารถทำได้:
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