사람이 읽을 수있는 파일 크기 정렬 문제를 고려하십시오. 다음을 실행하여이를 달성 할 수

사람이 읽을 수있는 파일 크기 정렬, 크기 식별자 (G, M, K)를 고려한 숫자 정렬을 사용하여 목록을 정렬하려면 어떻게해야합니까? du -sh예를 들어 ” “출력을 정렬 할 수 있습니까 ?

문제점 : 파일 / 폴더를 나열하고 크기별로 정렬하는 문제를 고려하십시오. 다음을 실행하여이를 달성 할 수 있습니다.

du -s * | sort -n

파일 / 폴더를 크기별로 정렬하여 나열합니다. 그러나 인쇄 된 크기 값은 바이트 단위 (또는 선택한 경우 메가 바이트 또는 기가 바이트)입니다.

사람이 읽을 수있는 값을 기준으로 정렬 할 수 있으므로 비슷한 것을 실행할 수 있습니다.

du -sh * | <human-readable file sort>

2.0M 이후에 1.5GB 폴더가 표시됩니다.



답변

Afaik,이를위한 표준 명령은 없습니다.

스택 오버플로에서 동일한 질문을 할 때 논의 된 다양한 해결 방법이 있습니다. du -h 출력을 크기별로 정렬하는 방법


답변

GNU coreutils> = 7.5를 사용하십시오.

du -hs * | 정렬 -h

(이 서버 오류 질문 에서 가져옴 )

맨 페이지

편집 : GNU 버전을 사용 du --version하고 sort --version있는지 여부를 사용하여 버전을 확인할 수 있습니다 . homebrew를 사용하는 경우 gdu및 을 사용해야 gsort합니다.


답변

1MB보다 큰 파일이 걱정되는 경우이 명령을 사용하여 파일을 정렬하고 awk를 사용하여 크기를 MB로 변환 할 수 있습니다.

du -s * | sort -n | awk '{print int($1 / 1024)"M\t"$2}'

또한 크기를 가장 가까운 MB로 반올림합니다. 원하는 단위로 변환하여 수정할 수 있습니다.


답변

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

답변

다른 하나는 다음과 같습니다.

$ du -B1 | sort -nr | perl -MNumber::Bytes::Human=format_bytes -F'\t' -lane 'print format_bytes($F[0])."\t".$F[1]'

당신은해야 할 수도 있습니다

$ cpan Number::Bytes::Human

먼저.


답변

du -sk * | 정렬 -n | awk ‘{print $ 2}’| f를 읽는 동안; du -sh “$ f”수행; 끝난


답변

이 명령은 크기를 MB 단위로 정렬합니다

du --block-size=MiB --max-depth=1 path | sort -n