新しいファイルがbashスクリプト内のフォルダーに追加されたことをすぐに検出するにはどうすればよいですか?フォルダにファイルが作成されたらすぐにスクリプトでファイルを処理したいと思います。 1分ごとに新しいファイルをチェックするcronジョブをスケジュールする以外に方法はありますか?
承認された回答:
inotifywait
の使用を検討する必要があります 、例として:
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
Ubuntuの場合inotifywait
inotify-tools
によって提供されます パッケージ。バージョン3.13以降(Ubuntu 12.04で現在)inotifywait
-fオプションなしのファイル名が含まれます。古いバージョンは強制する必要があるかもしれません。注意すべき重要なことは、-e
inotifywait
のオプション イベントフィルタリングを行うための最良の方法です。また、read
コマンドは、使用するか無視するかを選択できる複数の変数に位置出力を割り当てることができます。出力を前処理するためにgrep/sed/awkを使用する必要はありません。