Jika semuanya ada dalam satu direktori, Anda dapat melakukan:
for file in *fileprefix*; do
grep 'search string' "$file" | tail -1
done
Jika ini adalah file besar, mungkin perlu mempercepat dengan menggunakan tac
untuk mencetak file dalam urutan terbalik (baris terakhir terlebih dahulu) dan kemudian grep -m1
untuk mencocokkan kejadian pertama. Dengan begitu, Anda menghindari harus membaca seluruh file:
for file in *fileprefix*; do
tac file | grep -m1 'search string'
done
Keduanya menganggap tidak ada direktori yang cocok fileprefix
. Jika ada, Anda akan mendapatkan kesalahan yang bisa Anda abaikan. Jika itu masalah, periksa hanya file:
for file in *fileprefix*; do
[ -f "$file" ] && tac file | grep -m1 'search string'
done
Jika Anda juga perlu nama file dicetak, tambahkan -H
ke setiap grep
doa. Atau, jika Anda grep
tidak mendukungnya, katakan juga untuk mencari /dev/null
. Itu tidak akan mengubah output tetapi karena grep
diberikan beberapa file, itu akan selalu mencetak nama file untuk setiap klik:
for file in *fileprefix*; do
grep 'search string' "$file" /dev/null | tail -1
done