ディレクトリ内のファイルの変更を検出するBashスクリプト

ディレクトリ内のファイルの変更を検出するBashスクリプト

ディレクトリ内のファイルが2秒間隔で変更されたかどうかを検出するスクリプトを作成しようとしています。私が今まで持っているのは次のとおりです。

#!/bin/bash
for FILE in "${PWD}/*"
do
    SUM1="$(md5sum $FILE)"
    sleep 2
    SUM2="$(md5sum $FILE)"
    if [ "$SUM1" = "$SUM2" ];
    then
        echo "Identical"
    else
        echo "Different"
    fi
done

これは「同じ」値を一度だけ出力するので、各ファイルを確認し、ファイルごとに「同じ」または「異なる」を出力したいと思います。

編集する:インストールしなくても大丈夫ですか?inotify-toolsパック?

ベストアンサー1

あなたはそれを使用することができますイノティファイツール次のようにコマンドラインから確実に:

inotifywait -r  -m /dir/to/monitor/

~から人々は待つ

-m--monitor

単一のイベントを受信した後に終了するのではなく、無期限に実行されます。デフォルトの動作は、最初のイベントが発生した後に終了することです。

これはmanファイルからコピーされた継続的な監視スクリプトですinotifywait

#!/bin/sh
while inotifywait -e modify /var/log/messages; do
  if tail -n1 /var/log/messages | grep apache; then
    kdialog --msgbox "Blah blah Apache"
  fi
done

おすすめ記事