답변:
보다 일반적인 접근 방식은 다음과 같습니다. 의 출력 취득 du folder
및 du -h folder
두 개의 서로 다른 파일을.
du folder > file1
du -h folder > file2
중요한 부분은 다음과 같습니다 . 적절한 구분 기호를 사용하여 연결 file1
하고 file2
한 줄씩 표시합니다.
paste -d '#' file1 file2 > file3
( 및에 #
나타나지 않는 것으로 가정 )file1
file2
이제 정렬하십시오 file3
. 이것은 file1
내용을 기준으로 정렬하고 내용별로 연결을 끊습니다 file2
. 다음을 사용하여 관련 결과를 추출하십시오 cut
.
sort -n -k1,7 file3 | cut -d '#' -f 2
man sort
다른 옵션도 살펴보십시오 .
나중에 재사용 할 수 있도록이를 별칭으로 저장할 수도 있습니다. 이렇게하려면 아래에 다음을 추가하십시오 ~/.bashrc
.
sorted-du () {
paste -d '#' <( du "$1" ) <( du -h "$1" ) | sort -n -k1,7 | cut -d '#' -f 2
}
그런 다음 새 터미널 세션을 열고 새 별명을 실행하십시오.
sorted-du /home
file3
디렉토리에 실제로 이름이 지정된 파일이 있으면 어떻게되는지 생각해보십시오 . @SirCharlo이 답변에서 별칭 정의를 제거하고 더 안전한 것으로 대체하고 있습니다.
sort -h
다음과 같은 것을 시도하십시오 :
du -h folder | sort -h
대안 : -n
숫자 정렬 용
참고 : -h
정렬 옵션은 최신 버전의 Ubuntu에만 있습니다.
sort -h
이 답변은 10.04.4LTS 및 하위 버전의 우분투에 유효합니다 .
불행히도 KMG를 분류하는 정확한 대답은 어렵고 복잡합니다.
이것을 사용하여 사람이 읽을 수 있도록 정렬하는 명령으로 전체 du 명령의 별명을 지정할 수 있습니다
alias duf='du -sk * | sort -n | perl -ne '\''($s,$f)=split(m{\t});for (qw(K M G)) {if($s<1024) {printf("%.1f",$s);print "$_\t$f"; last};$s=$s/1024}'\'
내가 여기서 찾은
http://www.earthinfo.org/linux-disk-usage-sorted-by-size-and-human-readable/
단지 CD 폴더에 당신은 알고 싶습니다 DUF
이 duf 별명을 /home/user/.profile의 끝에 추가하여 duf 명령을 반영구적으로 만들 수 있습니다.
결과 :
user@hostname:~$ duf 0.0K Documenten 0.0K Muziek 0.0K Openbaar 0.0K Sjablonen 0.0K Video's 4.0K backup_db.sql.g 4.0K examples.desktop 12.0K xml printer ticket 52.0K hardinfo_report.html 152.0K librxtxSerial.so 2.7M jpos 4.4M nxclient_3.5.0-7_amd64.deb 6.4M nxnode_3.5.0-4_amd64.deb 6.8M Downloads 7.4M nxserver_3.5.0-5_amd64.deb 12.4M NetBeansProjects 18.1M mysqlworkbench.deb 28.3M Afbeeldingen 45.8M ergens-20110928-18.sql.gz 60.5M 2012-06-02ergens_archive.tar.gz 65.5M 2012-08-26ergens_archive.tar.gz 65.6M 2012-08-28ergens_archive.tar.gz 65.6M 2012-08-29ergens_archive.tar.gz 65.7M 2012-08-30ergens_archive.tar.gz 113.0M Bureaublad 306.2M ergens-20110928-18.sql
du -sch /var/* | sort -n
작동하지 않는 이유 는 MKKMMKKMMK의 정렬을 참조하십시오.
user@hostname:~$ du -sch /var/* |sort -n 0 /var/crash 0 /var/local 0 /var/lock 0 /var/opt 8,0M /var/backups 12K /var/games 16K /var/tmp 17M /var/log 68M /var/cache 104K /var/spool 144K /var/run 351M /var/lib 443M totaal 704K /var/mail
du folder | sort -n | cut -f 2 | while IFS= read -r -d '' path; do du -sh -- "$path"; done
-d ''
. 파일 명령의 출력에서을 사용하지 않아도됩니다.
sort
.
이것은 공백이나 아포스트로피가있는 파일 이름을 처리하며 xargs -d
또는 sort -h
다음을 지원하지 않는 시스템에서 작동합니다 .
du -s * | sort -n | cut -f2 | tr '\n' '\0' | xargs -0 -I {} du -sh "{}"
결과 :
368K diskmanagementd
392K racoon
468K coreaudiod
472K securityd
660K sshd
3.6M php-fpm
\n
과는 \0
? 너무 늦지 않습니까?
xargs -0
NUL로 구분됩니다 (find -print0이 생성하는 것처럼). 그렇지 않으면 -0을 사용할 수 없으며 아포스트로피에는 특별한 의미가 있습니다.
-0
있지만 관련이 없습니다 : imgur.com/87w3vfj