XML 파일 개수를 저장하는 작업

XML 파일 개수를 저장하는 작업

내 친구는 IT 회사에 근무하고 있으며 디렉터리(하위 디렉터리 포함) 내의 XML 파일 수를 계산해야 합니다.

그러나 파일 수가 수백만 개에 달하므로 이를 사용하거나 유사한 계산을 수행하는 데 ls -LR | grep .xml많은 시간이 걸립니다.

더 좋은 방법이 무엇인지 궁금합니다.

새로운 파일이 생성되거나 수정 시간이 변경될 때마다 카운터(파일 수)에 영향을 미치도록 일종의 백그라운드 프로세스가 이를 처리할 수 있습니까?

답변1

설명하는 데몬은 다음을 사용하여 작동합니다.inotify.

하지만 어쩌면 사용하는 find것이 wc -l충분히 빠를까요?

간단한 테스트만 실행해 보았는데, 제 시스템에서는 time ls -lR /mm/|grep -c jpg( real 0m2.168s)와 ( ) time find /mm -type f -name \*jpg|wc -l사이에 상당한 차이가 있습니다 . real 0m0.397s둘 다 약 42,000개의 파일을 반환하므로 더 큰 디렉터리의 경우 차이가 더 클 수 있습니다.

(디스크 캐시 효과를 배제하기 위해 두 명령을 여러 번 실행했습니다.)

답변2

다음 스크립트는 디렉터리를 무기한 모니터링하고 디렉터리 내용이 변경될 때마다 "*.xml" 파일 수를 인쇄합니다.

DIR="a_path_to_directory_to_watch"
(echo; inotifywait -m -r -e create -e delete "$DIR" 2> /dev/null) |
    while read; do
        find "$DIR" -name '*.xml' -printf . | wc -c
    done

관련 정보