Bagaimana saya bisa segera mendeteksi ketika file baru ditambahkan ke folder dalam skrip bash? Saya ingin skrip memproses file segera setelah dibuat di folder. Apakah ada metode selain menjadwalkan tugas cron yang memeriksa file baru setiap menit atau lebih?
Jawaban yang Diterima:
Anda harus mempertimbangkan untuk menggunakan inotifywait
, sebagai contoh:
inotifywait -m /path -e create -e moved_to |
while read dir action file; do
echo "The file '$file' appeared in directory '$dir' via '$action'"
# do something with the file
done
Di Ubuntu inotifywait
disediakan oleh inotify-tools
kemasan. Pada versi 3.13 (saat ini di Ubuntu 12.04) inotifywait
akan menyertakan nama file tanpa opsi -f. Versi yang lebih lama mungkin perlu dipaksakan. Yang penting untuk diperhatikan adalah bahwa -e
pilihan untuk inotifywait
adalah cara terbaik untuk melakukan penyaringan acara. Juga, read
. Anda perintah dapat menetapkan output posisi ke dalam beberapa variabel yang dapat Anda pilih untuk digunakan atau diabaikan. Tidak perlu menggunakan grep/sed/awk untuk memproses keluaran sebelumnya.