du -sh /dir/*
사이즈별로 어떻게 정렬하나요 ? 를 사용하라는 웹사이트를 읽었 | sort -n
지만 분명히 사실이 아닙니다. 이것은 잘못된 예입니다.
[~]# du -sh /var/* | sort -n
0 /var/mail
1.2M /var/www
1.8M /var/tmp
1.9G /var/named
2.9M /var/run
4.1G /var/log
8.0K /var/account
8.0K /var/crash
8.0K /var/cvs
8.0K /var/games
8.0K /var/local
8.0K /var/nis
8.0K /var/opt
8.0K /var/preserve
8.0K /var/racoon
12K /var/aquota.user
12K /var/portsentry
16K /var/ftp
16K /var/quota.user
20K /var/yp
24K /var/db
28K /var/empty
32K /var/lock
84K /var/profiles
224M /var/netenberg
235M /var/cpanel
245M /var/cache
620M /var/lib
748K /var/spool
답변1
GNU coreutils(대부분의 Linux 배포판에서 공통)가 있는 경우 다음을 사용할 수 있습니다.
du -sh -- * | sort -h
이 -h
옵션은 sort
입력이 사람이 읽을 수 있는 형식(단위가 있는 숫자, 1024를 기준으로 하므로 1023은 1K 미만으로 간주되며 이는 GNU의 접근 방식과 일치함 du -h
)임을 나타냅니다.
이 기능2009년 8월 GNU 핵심 유틸리티 7.5에 추가됨.
노트:
이전 버전의 Mac OSX를 사용하는 경우 coreutils를 설치 한
brew install coreutils
다음 .gsort
sort
최신 버전의 macOS(Mojave에서 검증됨)는
sort -h
기본적으로 지원됩니다.
답변2
사람이 읽을 수 있는 청크를 사용하는 대신 -k 플래그를 사용하여 1K 청크를 계산해 보세요. 그런 다음 쉽게 숫자로 정렬할 수 있는 공통 단위가 있습니다.
du -ck | sort -n
명시적으로 인간 단위를 요구하지는 않지만, 그렇게 한다면 할 수 있는 방법은 많습니다. 많은 사람들이 위의 1K 블록 기술을 사용한 다음 du를 두 번째 호출하는 것 같습니다.
https://serverfault.com/questions/62411/how-can-i-sort-du-h-output-by-size
추가된 KB 단위를 보려면 다음을 사용하세요.
du -k | sed -e 's_^\([0-9]*\)_\1 KB_' | sort -n
답변3
당신이 가지고 있지 않다면GNU coreutils의 최신 버전, 정렬 가능한 출력을 얻고 일부 후처리를 통해 인간 친화적인 출력을 생성하기 위해 du
없이 호출할 수 있습니다 . 이는 버전에 해당 플래그가 없어도 -h
작동한다는 장점이 있습니다 .du
-h
du -k | sort -n | awk '
function human(x) {
if (x<1000) {return x} else {x/=1024}
s="kMGTEPZY";
while (x>=1000 && length(s)>1)
{x/=1024; s=substr(s,2)}
return int(x+0.5) substr(s,1,1)
}
{gsub(/^[0-9]+/, human($1)); print}'
SI 접미사가 필요한 경우(즉, 1024 대신 1000의 배수) while
루프 본문에서 1024를 1000으로 변경합니다. (조건의 1000은 의도적인 것이므로 예를 들어 대신 을 얻습니다 1M
. 1000k
)
du
크기를 바이트 단위로 표시하는 옵션이 있는 경우 ( -b
예 -B 1
: 디스크 사용량이 아닌 실제 파일 크기를 계산하는 부작용이 있을 수 있음) 시작 부분 s
(예: s=" kMGTEPYZ";
) 또는 if (x<1000) {return x} else {x/=1024}
시작 부분에 공백을 추가하세요. 기능을 추가합니다 human
.
1-10 범위의 숫자에 대해 소수점 이하 자릿수를 표시하는 것은 독자의 연습 문제로 남겨 둡니다.
답변4
OS X에서는 다음을 통해 필요한 coreutils를 설치할 수 있습니다.스스로 만든:
brew install coreutils
gsort
이를 통해 무엇보다도 -h
명령줄 인수를 갖게 됩니다 .