![지난번 이후 디렉터리 내용이 변경되었는지 확인하는 가장 빠른 방법](https://linux55.com/image/123121/%EC%A7%80%EB%82%9C%EB%B2%88%20%EC%9D%B4%ED%9B%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%20%EB%82%B4%EC%9A%A9%EC%9D%B4%20%EB%B3%80%EA%B2%BD%EB%90%98%EC%97%88%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94%20%EA%B0%80%EC%9E%A5%20%EB%B9%A0%EB%A5%B8%20%EB%B0%A9%EB%B2%95.png)
다음을 사용하여 디렉토리를 확인하는 스크립트가 있습니다.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, 이는 주로 최신 타임스탬프/최대 크기 등을 가진 파일을 찾는 것에 관한 것이지만 상당히 복잡한 솔루션도 포함되어 있습니다. )