du(Disk Usage)는 파일과 디렉터리 용량을 계산하는 유틸리티로 용량을 계산할 디렉터리의 경로를  주고 실행합니다.

$ du /usr/local/

77936   /usr/local/bin
8       /usr/local/etc
1448    /usr/local/include
...
872     /usr/local/share
1204756 /usr/local/
BASH

마지막 줄에는 입력 경로인 /usr/local 의 총 용량이 표시됩니다.


크기 지정

총량 표시

-c, --total 를 사용하면 마지막 줄에 명시적으로 총량을 표시해 줍니다.

$ du -c /usr/local/

77936   /usr/local/bin
8       /usr/local/etc
1448    /usr/local/include
...
872     /usr/local/share
1204756 /usr/local/
1204756 total
BASH

표시 단위 지정

-b (byte), -k (kil), -m(mega) 옵션을 사용해서 표시할 단위를 지정할 수 있으며 아래는 mega 단위로 표시합니다.

$ du -c -m /usr/local/

77   /usr/local/bin
1    /usr/local/etc
2    /usr/local/include
...
6     /usr/local/share
1177 /usr/local/
1177 total
BASH


전체 크기만 표시

하위 디렉터리의 크기는 제외하고 총 크기만 알고 싶다면 -s, --summarize 옵션을 사용합니다.

총량만 표시

$ du -s /usr/local/

1204756 /usr/local/
BASH


그외 옵션

읽기 좋게 표시

표시 단위 지정 옵션을 사용해도 용량을 표시하는 숫자를 바로 해석하기는 어렵습니다.  -h, --human-readable 옵션을 사용하면 읽기 좋게 단위를 같이 표시해 줍니다.

읽기 좋게 표시

$ du -h /usr/local/

77M     /usr/local/bin
8.0K    /usr/local/etc
1.5M    /usr/local/include
...
5.8M    /usr/local/share
1.2G	/usr/local/
BASH


-h 와 -s 를 같이 사용하면 총량만 읽기 좋게 표시합니다.

읽기 좋게 총량만 표시

$  du -sh /usr/local/

1.2G    /usr/local/
BASH


하위 깊이 제한

기본적으로 du 는 모든 하위 디렉터리의 크기도 같이 계산합니다. 깊이를 제한하려면 -d, --max-depth=n 옵션을 사용하면 됩니다. 다음은 depth 가 0 이므로 du -sh 와 동일한 의미가 됩니다.

--max-depth-s 옵션을 같이 사용할 수는 없습니다.

총량만 표시

$  du -h /usr/local/ -d 0

1.2G    /usr/local/
BASH

총량만 표시

$  du -h /usr/local/ --max-depth=0

1.2G    /usr/local/
BASH


첫 번째 하위 폴더까지만 총량을 구하려면 --max-depth=1 옵션을 사용하면 됩니다.

하위 폴더 용량별 내림차순 정렬

$  du -h /usr/local/ -d 1

77M     /usr/local/bin
8.0K    /usr/local/etc
1.5M    /usr/local/include
274M    /usr/local/lib
...
76M     /usr/local/node-v12.13.1-linux-x64
1.2G    /usr/local/
BASH


디렉터리 크기로 정렬

기본적으로 du 는 하위 폴더명을 기준으로 정렬합니다. 만약 용량을 기존으로 정렬한다면 pipesort 에게 전달해 주면 됩니다.

하위 폴더 용량별 내림차순 정렬

$ du  -h -d 1 /usr/local/ | sort -n

1.1M    /usr/local/sbin
1.2G    /usr/local/
1.5M    /usr/local/include
60K     /usr/local/libexec
...
274M    /usr/local/lib
BASH

-h 옵션을 사용할 경우 문자가 포함되므로 위와 같이 제대로 정렬이 되지 않는 문제가 있습니다.

정렬이 필요할 경우 -h 옵션 대신 표시 단위를 지정하는 -b, -k -m 옵션을 사용하면 제대로 정렬이 됩니다.

하위 폴더 용량별 오름차순 정렬

$ du  -m -d 1 /usr/local/ | sort -n

1       /usr/local/libexec
2       /usr/local/include
77      /usr/local/bin
...
1177    /usr/local/
BASH


만약 내림 차순 정렬이 필요하다면 sort-r 옵션을 추가해 주면 됩니다.

하위 폴더 용량별 내림차순 정렬

$ du -m -d 1 /usr/local/ | sort -rn

1177    /usr/local/
...
77      /usr/local/bin
2       /usr/local/include
BASH


같이 보기