사람이 읽을 수있는 크기를 숫자로 정렬하려면 어떻게합니까? 인간이 읽을 수있는

예를 들어 공간 폴더의 양을 보여주는 명령이 있습니다.

du folder | sort -n

그것은 잘 작동하지만 인간이 읽을 수있는 형태를 갖고 싶습니다.

du -h folder

그러나 그렇게하면 숫자로 정렬 할 수 없습니다.

조인 du folder하고 du -h folder출력을로 정렬 하는 방법은 du folder이지만 첫 번째 열은du -h folder

추신. 이것은 단지 예일뿐입니다. 이 기술은 나에게 매우 유용 할 수 있습니다 (가능한 경우).



답변

보다 일반적인 접근 방식은 다음과 같습니다. 의 출력 취득 du folderdu -h folder두 개의 서로 다른 파일을.

du folder > file1
du -h folder > file2

중요한 부분은 다음과 같습니다 . 적절한 구분 기호를 사용하여 연결 file1하고 file2한 줄씩 표시합니다.

paste -d '#' file1 file2 > file3

( 및에 #나타나지 않는 것으로 가정 )file1file2

이제 정렬하십시오 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

답변

다음과 같은 것을 시도하십시오 :

du -h folder | sort -h

대안 : -n숫자 정렬 용

참고 : -h정렬 옵션은 최신 버전의 Ubuntu에만 있습니다.


답변

이 답변은 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

답변

GNU 명령 sort에는 다음과 같은 옵션이 있습니다.

-h, --human-numeric-sort (예를 들어, 2K 1G) 사람이 읽을 수있는 번호를 비교합니다.

BSD / OSX에이 옵션을 사용하려면, 당신은 설치할 수 있습니다 sort에서 coreutils(통해 brew)와에 bin 폴더를 추가 PATH하여로 RC의 파일입니다.

따라서 명령은 다음과 같습니다.

du -ah . | sort -rh | head -20

답변

최신 버전의 Ubuntu에는을 사용하십시오 du -h directory | sort -h.

제어 할 수없는 파일을 찾기 위해 항상이 형식을 사용합니다.


답변

Ctrl+ Alt+로 터미널을 열고 다음을 t입력하십시오.

  du -sk * | sort -rn 

답변

이것은 공백이나 아포스트로피가있는 파일 이름을 처리하며 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