예를 들어 해당 디렉터리의 파일이 변경된 경우 디렉터리 수정 날짜를 업데이트해야 합니다. 기본적으로 해당 디렉터리에서 발생하는 모든 변경 사항은 해당 디렉터리에 대한 "터치"를 트리거해야 합니다.
이러한 파일 작업을 수행할 때 시스템이 이를 자동으로 수행하도록 할 수 있습니까?
그렇다면 루트 디렉터리까지 상위 디렉터리를 "터치"하는 것도 가능합니까?
답변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