지난번 이후 디렉터리 내용이 변경되었는지 확인하는 가장 빠른 방법

지난번 이후 디렉터리 내용이 변경되었는지 확인하는 가장 빠른 방법

다음을 사용하여 디렉토리를 확인하는 스크립트가 있습니다.mdls*(추가된 시간별로 정렬) 일부 작업을 수행합니다. 다만 mdls속도가 좀 느리기 때문에 꼭 필요한 경우(디렉토리 내용이 변경된 경우 등)에만 실행하고 싶습니다.

내 생각은 그것을 한 번 실행 mdls하고 결과를 캐시한 다음 디렉터리 상태를 추적하는 작업을 수행하는 것입니다. 후속 실행에서는 확인 작업을 다시 실행하고 결과를 내 결과와 비교하겠습니다. 다르면 다시 실행하고 mdls, 그렇지 않으면 캐시를 사용하십시오.

나는 du '/dir/path' | tail -1(디렉터리 크기가 바이트와 동일하게 유지된다면 내용이 변경되지 않았을 수 있음) 또는 ls '/dir/path' | md5'.

저는 현재 md5파일 이름 바꾸기에 대한 복원력 때문에 이 솔루션을 선호합니다. 그러나 두 가지 솔루션 모두 형편없으며 더 효율적인 방법(아직도 빠름)이 있는지 알고 싶습니다.

도움이 된다면 솔루션은 결국 Ruby 스크립트에서 사용됩니다.


*이 글은 포스팅하지 않겠습니다다양한 요청을 해보세요왜냐하면 mdls그것은 요점이 아니기 때문입니다. 다른 느린 명령일 수 있습니다.

답변1

새 파일/삭제된 파일을 확인하면 충분합니다.기존의mtime파일), 디렉터리 자체의 타임스탬프를 사용할 수 있습니다.

를 통해 받으실 수 있습니다 stat. 여기 출력은 1970년 초 이후의 초 단위입니다.

$ stat -f %m "$dir"      # stat on OS X
1512493220
$ stat -c %Y "$dir"      # GNU coreutils stat
1512493801
$ stat -c %.9Y "$dir"    # nanoseconds too
1512493801.802870731

파일 수정 사항을 확인하려면 다음을 사용하여 모든 타임스탬프를 확인하고 가장 큰 타임스탬프를 얻을 수 있습니다 sort.

$ stat -f %m "$dir"/* | sort -n | tail -1
1512428453

(이것은 거의배쉬 FAQ 003, 이는 주로 최신 타임스탬프/최대 크기 등을 가진 파일을 찾는 것에 관한 것이지만 상당히 복잡한 솔루션도 포함되어 있습니다. )

관련 정보