そのディレクトリのファイルが変更されたら、ディレクトリの変更日をどのように変更しますか?

そのディレクトリのファイルが変更されたら、ディレクトリの変更日をどのように変更しますか?

たとえば、そのディレクトリのファイルが変更された場合は、ディレクトリの変更日を更新する必要があります。デフォルトでは、そのディレクトリで行われたすべての変更はそのディレクトリの「タッチ」をトリガーする必要があります。

これらのファイル操作を実行するときにシステムに自動的にそれを実行させることはできますか?

それでは、ルートディレクトリまで親ディレクトリを「タッチ」することも可能ですか?

答え1

Linuxでは、次のものを使用できます。inotifyファイル変更時に操作を実行するためのインタフェースです。シェルで利用可能inotify待つ

inotifywait -e modify --format '%f' /path/to/directory |
while read line; do
  if [ -n "$line" ]; then touch /path/to/directory; fi
done

/path/to/directoryサブディレクトリのファイル修正タイムスタンプも更新するには、-rこのオプションをinotifywait

答え2

これはサプリメントですザイルズの答え

そのディレクトリとすべての親ディレクトリをタッチするには、次のように実行します(テストされていません)。

dir=/path/to/directory
inotifywait -e modify --format '%f' "$dir" |
while read line; do
   if [ -n "$line" ]; then
      # Handle relative paths.
      if [ "$(echo "$line" | cut -c1)" != / ] ; then
          path=.
      fi

      echo "$dir" | tr '/' '\n' |
      while read part ; do
         touch "$path/$part"
      done
   fi
done

関連情報