当该目录中的文件更改时,如何使目录修改日期更改?

当该目录中的文件更改时,如何使目录修改日期更改?

例如,如果该目录中的文件已更改,则应更新目录修改日期。基本上,该目录中发生的任何更改都应该触发该目录上的“触摸”。

我可以让系统在执行这些文件操作时自动执行此操作吗?

如果是,是否也可以“触及”父目录,直到根目录?

答案1

在 Linux 上,您可以使用inotify修改文件时执行操作的接口。从 shell 中,您可以使用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

相关内容