문자열이 포함된 파일을 제외한 총 디스크 사용량 찾기

문자열이 포함된 파일을 제외한 총 디스크 사용량 찾기

owncloud이름/디렉토리에 nobackup 문자열이 있는 파일과 디렉터리를 제외하고 디렉터리의 디스크 사용량을 얻으려고 합니다 .

이것은 지금까지 내 명령입니다.

find . -type f -not -regex '.+?nobackup.*'  -exec du -c {} +  

그러나 클라우드 디렉터리에서 사용할 때 잘못된 합계가 표시되고 테스트 디렉터리에서는 정상적으로 작동합니다.

답변1

OR 을 사용하면 OR은 find ... -exec COMMAND {} +각 명령에 의해 정의된 버퍼 공간보다 길지 않은 파일 이름 인수 목록을 작성 합니다 ( 로 제한됨 ). 버퍼 공간이 부족하면 각 명령에 파일 이름 인수 목록이 전달되고 새 목록이 생성되기 시작합니다. 이 프로세스는 더 이상 파일 이름이 없을 때까지 필요한 만큼 반복되며, 이 시점에서 빌드 중인 파일 이름 목록이 최종 시간으로 전달됩니다.find ... -print0 | xargs -0 COMMANDxargsfindARG_MAXCOMMANDCOMMAND

find따라서 명령이 많은 수의 파일 이름을 반환하는 것을 원하지 않는 경우

find . -type f -not -regex '.+?nobackup.*' -exec du -c {} +  

그거면 충분할 것 같아요. 귀하가 귀하의 du지원을 받고 있다면 null로 끝나는 --files0-from것을 직접 읽는 방법을 사용할 수 있습니다 (이것이 다음을 의미한다고 생각하세요).--files0-from=-filesstdindu-stdin

find . -type f -not -regex '.+?nobackup.*' -print0 | du -c --files0-from=-

참고: --files0-from지정되지 않았지만 posix최신 버전 gnu du에서는 확장되어야 합니다. 구현에서 이를 생략하는 경우 어떻게든 결과를 반복 find하고 루프에 합계를 추가해야 할 가능성이 높습니다.

관련 정보