해당 디렉터리의 파일이 변경되면 디렉터리 수정 날짜를 어떻게 변경합니까?

해당 디렉터리의 파일이 변경되면 디렉터리 수정 날짜를 어떻게 변경합니까?

예를 들어 해당 디렉터리의 파일이 변경된 경우 디렉터리 수정 날짜를 업데이트해야 합니다. 기본적으로 해당 디렉터리에서 발생하는 모든 변경 사항은 해당 디렉터리에 대한 "터치"를 트리거해야 합니다.

이러한 파일 작업을 수행할 때 시스템이 이를 자동으로 수행하도록 할 수 있습니까?

그렇다면 루트 디렉터리까지 상위 디렉터리를 "터치"하는 것도 가능합니까?

답변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

관련 정보