Linux에서 크기별로 정렬하는 범용 도구, 일반적인 단위 접미사에 대해 알아보기

Linux에서 크기별로 정렬하는 범용 도구, 일반적인 단위 접미사에 대해 알아보기

파일/디렉토리 목록을 크기별로 정렬할 수 있습니다.

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-sorthdu

이제 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에는 oLglob 한정자가 있습니다(디스크 사용량이 아닌 크기별로 정렬된다는 점에 유의하세요).

ls -S수행할 수 있습니다( GNU를 사용하여 정렬되지 않음) ls.-U

ls -ldU -- *(oL)

해결 후 크기별로 심볼릭 링크를 정렬하는 경우:

ls -LldU -- *(-oL)
wc -c -- *(-oL)

답변2

lssortGNU 변형 -h(니모닉: uman)을 이해 했습니다 -h. ls -lSh, ls -sSh또는 다음을 사용할 수 있습니다 du -h … | sort -h.

du --max-depth=1 -h . | sort -h

ls디렉터리 내용의 크기는 보고되지 않는다는 점을 명심하세요 .

관련 정보