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