機能 ショートカットキー
リファレンス(参考URL)一覧へ移動 R
記事URLをMarkDownとしてコピー Ctrl+M
前のコードタグへ移動 Ctrl+←
次のコードタグへ移動 Ctrl+→
ヘルプを表示・非表示 H
Tips
- ショートカットキーは記事上で有効です。ヘッダー/フッター付近では機能しないことがあります。
- コードタグ移動機能がうまく動かないときは、Shift+F5でページを更新してみてください。
- このウィンドウを閉じるには、Hキーをもう一度押してください

bashでフォルダのファイルの変更を監視する

プログラミング

C:\pg\detect_changes\detect_changes_in_a_directory.sh

DIR_TO_CHECK='/mnt/c/pg/detect_changes'
PATH_TO_EXCLUDE="/mnt/c/pg/detect_changes/_meta*"

OLD_SUM_FILE='/mnt/c/pg/detect_changes/_meta/old_sum.txt'

if [ -e $OLD_SUM_FILE ]
then
    OLD_SUM=`cat $OLD_SUM_FILE`
else
    OLD_SUM="nothing"
fi

NEW_SUM=`find $DIR_TO_CHECK/* \! -path "$PATH_TO_EXCLUDE"  -print0| xargs -0 du -b --time --exclude=$PATH_TO_EXCLUDE | sort -k4,4 | sha1sum | awk '{print $1}'`

if [ "$OLD_SUM" != "$NEW_SUM" ]
then
    echo "Directory has changed. Do shomething!"

    # do whatever you want to do with the directory.
    # update old sum
    echo $NEW_SUM > $OLD_SUM_FILE
fi


実行してみます。

$ . detect_changes_in_a_directory.sh
Directory has changed. Do shomething!
$ . detect_changes_in_a_directory.sh
$ touch _smp_.txt
$ . detect_changes_in_a_directory.sh
Directory has changed. Do shomething!
$ . detect_changes_in_a_directory.sh
$ . detect_changes_in_a_directory.sh

$DIR_TO_CHECKに空白スペースが有るとエラーがでます。
findのあとの$DIR_TO_CHECKは、"$DIR_TO_CHECK"というように囲んでおいたほうがいいかもしれません。

ref:
How to detect changes in a directory with Bash — jPablo128

この記事で欲しい情報が見つからなかった方へ

この記事の更新情報がある場合があります。
この記事は以下の記事とも関連性があると思われます。

Bashで!(エクスクラメーション)をエスケープするには
BashでISO8601のタイムスタンプをdateで出力
Bash コマンドが存在するかパターンマッチで判断するには
WindowsにCicaフォントをインストールしてconemuのWSL bashで使えるようにする
WSL bashでpowershellに絶対パスのファイルを渡して開く方法
bash yes no yes以外なら終了する
PowershellでBashのhistoryコマンド


管理人の方針で、既存の記事の編集はせず、新しい情報や大きな既存情報の更新があった場合には、新しい記事として公開することになっています。
当記事で欲しい情報が見つからなかった・解決に至らなかった場合、これらのリンクがお役に立てるかも知れません。

どうやってこの関連記事を生成しているの?
この機能のPHPソースコード(2500行)

コメントを残す

Close Menu