파일/디렉토리 목록을 크기별로 정렬할 수 있습니다.
ls -lS
du
하지만 사람이 읽을 수 있는 형식으로 사용하는 경우:
du --max-depth=1 -h .
나는 얻다:
128K ./something
3,3M ./more
3,2M ./even-more
...
주문하지 않은 것. 그러한 데이터를 주문하는 표준 도구가 있습니까? 표준은 sort
이것을 지원하지 않는 것 같습니다. 직접 해야 하나요?
답변1
GNU에는 이를 처리하기 위한 / 옵션과 정렬 키 플래그가 sort
있습니다 (1024 단위(1K 앞에 1023이 옴)를 기반으로 정렬을 예상하며 이는 GNU에서도 계산되는 방식입니다.-h
--human-numeric-sort
h
du
이제 this 를 사용하면 일부 정밀도가 손실되므로 du -h
순서가 잘못될 수 있습니다.
$ du -k a b
1212 a
1208 b
$ du -h a b | sort -h
1.2M a
1.2M b
@StephenKitt가 언급했듯이 du
전체 정밀도를 제공하고 다음으로 변환하도록 지시하여 문제를 해결할 수 있습니다.인류예를 들어 GNU 정렬 형식을 사용하십시오 numfmt
.
$ du --block-size=1 a b | sort -n | numfmt --to=iec
1.2M b
1.2M a
(간격은 영향을 받습니다.) 위의 모든 내용은 파일 이름에 개행 문자가 포함되어 있지 않다고 가정합니다.
크기별 정렬에 대한 일반적인 질문과 관련하여 zsh
glob에는 oL
glob 한정자가 있습니다(디스크 사용량이 아닌 크기별로 정렬된다는 점에 유의하세요).
ls -S
수행할 수 있습니다( GNU를 사용하여 정렬되지 않음) ls
.-U
ls -ldU -- *(oL)
해결 후 크기별로 심볼릭 링크를 정렬하는 경우:
ls -LldU -- *(-oL)
wc -c -- *(-oL)
답변2
ls
sort
GNU 변형 -h
(니모닉: uman)을 이해 했습니다 -h
. ls -lSh
, ls -sSh
또는 다음을 사용할 수 있습니다 du -h … | sort -h
.
du --max-depth=1 -h . | sort -h
ls
디렉터리 내용의 크기는 보고되지 않는다는 점을 명심하세요 .