du의 출력을 조작하여 사용자 정의 인쇄물을 얻습니다.

du의 출력을 조작하여 사용자 정의 인쇄물을 얻습니다.

나는 보통 다음 명령을 실행하여 각 디렉터리의 크기를 확인합니다.

du -sBM /* | sort -nr | head -n20

그러나 여기서 블록 크기 "M"을 지정하면 모든 값이 "M"으로 지정됩니다. 문제는 1M 이하로 내려가면 모든 데이터가 1M으로 보고된다는 점이다. 따라서 이 솔루션은 나에게 최적이 아닙니다. 다음 명령을 실행하면:

du -sh /* | sort -nr | head -n20

실제로 원하는 출력(블록 크기 G, M 및 K)을 얻었지만 모두 순서가 잘못되었습니다. 예를 들어:

618M    /var
387M    /lib
336M    /home
260K    /root
184K    /dev
102M    /boot
32M /etc
32K /tmp
27M /lib64
24K /opt
16K /lost+found
14M /sbin
8.0K    /mnt
7.4M    /bin
4.0K    /srv
4.0K    /net
4.0K    /misc
4.0K    /media
4.0K    /cgroup
2.2G    /usr

M을 G 위에, K를 M 위에 놓는 식으로 말이죠. 내 출력이 다음과 같기를 원합니다.

2.2G    /usr
618M    /var
387M    /lib
336M    /home
102M    /boot
32M     /etc
27M     /lib64
14M     /sbin
260K    /root
184K    /dev
32K     /tmp
24K     /opt
16K     /lost+found
8.0K    /mnt
7.4M    /bin
4.0K    /srv
4.0K    /net
4.0K    /misc
4.0K    /media
4.0K    /cgroup

여기에 내가 원하는 것을 수행하는 줄이 있습니까, 아니면 스크립트가 더 나은 솔루션입니까?

답변1

대신 sort옵션 을 사용하십시오 .-h-n

du -sh /* | sort -hr | head -n20

관련 정보