이 bash 명령이 있습니다.
find . -type d -mindepth 1 -maxdepth 2 | du -h --threshold=2KB
나는 다음과 같은 결과를 얻었습니다.
r2g: the tarball folders: 8.0K ./cli
r2g: the tarball folders: 24K ./dist/commands/ls
r2g: the tarball folders: 48K ./dist/commands/add
r2g: the tarball folders: 36K ./dist/commands/run
r2g: the tarball folders: 20K ./dist/commands/basic
r2g: the tarball folders: 36K ./dist/commands/config/local
r2g: the tarball folders: 36K ./dist/commands/config/global
r2g: the tarball folders: 92K ./dist/commands/config
r2g: the tarball folders: 4.0K ./dist/commands/find
r2g: the tarball folders: 44K ./dist/commands/init
r2g: the tarball folders: 272K ./dist/commands
r2g: the tarball folders: 416K ./dist
r2g: the tarball folders: 48K ./assets
r2g: the tarball folders: 504K .
하지만 이 명령을 단독으로 실행하는 경우:
find . -type d -mindepth 1 -maxdepth 2
나는 이것만 얻습니다:
r2g: the tarball folders: ./assets
r2g: the tarball folders: ./cli
r2g: the tarball folders: ./dist
r2g: the tarball folders: ./dist/commands
무슨 일인지 아는 사람 있나요? du 명령이 find가 명시적으로 전달하지 않더라도 깊이가 2인 폴더의 하위 폴더를 표시하는 것 같습니다. 어떻게든 du를 깊이로 제한해야 할까요?
답변1
du
유틸리티 에 디렉토리 경로 이름을 제공하면 기본적으로 해당 디렉토리와 모든 하위 디렉토리의 크기가 표시됩니다.
디렉터리가 지정되지 않으면(예제 코드에서와 같이) 현재 디렉터리와 모든 하위 디렉터리의 크기가 표시됩니다.
유틸리티가 표준 입력에서 읽지 않기 du
때문에 예제 코드는 아무것도 전달하지 않습니다 .du
각 디렉토리의 크기를 계산한 다음 사용하려고 합니다.
find . -mindepth 1 -maxdepth 2 -type d -exec du -h --threshold=2KB -s {} \;
du
자체적으로 반복되므로 계산에 각 하위 디렉터리의 크기도 포함되지만 -s
전체 크기만 표시됩니다.
각 디렉터리의 크기를 계산하시겠습니까?들어오지 못하게 하다하위 디렉터리의 크기를 확인하려면 du
디렉터리에 있는 파일의 파일 이름을 명시적으로 전달해야 합니다. 이걸 정확하게 하기는 좀 어려우므로 꼭 필요한 경우 find
가 아니면 하지 않습니다 find
.