Her şey tek bir dizindeyse şunları yapabilirsiniz:
for file in *fileprefix*; do
grep 'search string' "$file" | tail -1
done
Bunlar büyük dosyalarsa, tac
dosyayı ters sırada (önce son satır) yazdırmak ve ardından grep -m1
ilk tekrarla eşleştirmek için işleri hızlandırmaya değer olabilir . Bu şekilde, tüm dosyayı okumak zorunda kalmazsınız:
for file in *fileprefix*; do
tac file | grep -m1 'search string'
done
Her ikisi de eşleşen dizin olmadığını varsayar fileprefix
. Varsa, göz ardı edebileceğiniz bir hata alırsınız. Bu bir sorunsa, yalnızca dosyaları kontrol edin:
for file in *fileprefix*; do
[ -f "$file" ] && tac file | grep -m1 'search string'
done
Basılacak dosya adına da ihtiyacınız varsa, -H
her grep
çağrıyı ekleyin . Veya, grep
desteklemiyorsa, arama yapmasını da söyleyin /dev/null
. Bu, çıktıyı değiştirmez, ancak grep
birden fazla dosya verildiğinden, her isabet için her zaman dosya adını yazdırır:
for file in *fileprefix*; do
grep 'search string' "$file" /dev/null | tail -1
done