owncloud
이름/디렉토리에 nobackup 문자열이 있는 파일과 디렉터리를 제외하고 디렉터리의 디스크 사용량을 얻으려고 합니다 .
이것은 지금까지 내 명령입니다.
find . -type f -not -regex '.+?nobackup.*' -exec du -c {} +
그러나 클라우드 디렉터리에서 사용할 때 잘못된 합계가 표시되고 테스트 디렉터리에서는 정상적으로 작동합니다.
답변1
OR 을 사용하면 OR은 find ... -exec COMMAND {} +
각 명령에 의해 정의된 버퍼 공간보다 길지 않은 파일 이름 인수 목록을 작성 합니다 ( 로 제한됨 ). 버퍼 공간이 부족하면 각 명령에 파일 이름 인수 목록이 전달되고 새 목록이 생성되기 시작합니다. 이 프로세스는 더 이상 파일 이름이 없을 때까지 필요한 만큼 반복되며, 이 시점에서 빌드 중인 파일 이름 목록이 최종 시간으로 전달됩니다.find ... -print0 | xargs -0 COMMAND
xargs
find
ARG_MAX
COMMAND
COMMAND
find
따라서 명령이 많은 수의 파일 이름을 반환하는 것을 원하지 않는 경우
find . -type f -not -regex '.+?nobackup.*' -exec du -c {} +
그거면 충분할 것 같아요. 귀하가 귀하의 du
지원을 받고 있다면 null로 끝나는 --files0-from
것을 직접 읽는 방법을 사용할 수 있습니다 (이것이 다음을 의미한다고 생각하세요).--files0-from=-
files
stdin
du
-
stdin
find . -type f -not -regex '.+?nobackup.*' -print0 | du -c --files0-from=-
참고: --files0-from
지정되지 않았지만 posix
최신 버전 gnu du
에서는 확장되어야 합니다. 구현에서 이를 생략하는 경우 어떻게든 결과를 반복 find
하고 루프에 합계를 추가해야 할 가능성이 높습니다.