파일 및 폴더의 크기(정렬)를 긴 정수가 아닌 MB, GB 단위로 어떻게 확인할 수 있나요? [복사]

파일 및 폴더의 크기(정렬)를 긴 정수가 아닌 MB, GB 단위로 어떻게 확인할 수 있나요? [복사]

Mac에서는 Bash를 사용하여 다음을 수행하는 경향이 있습니다.

du -sh *

현재 디렉터리에 있는 파일 및 폴더의 크기를 MB 및 GB 단위로 알려줍니다. 하지만 크기별로 정렬하고 싶다면 이렇게 할 수도 있습니다.

du -sh * | sort -g

합계가 고려되지 않기 때문에 잘 작동하지 않습니다 M. G따라서 44MB는 20GB보다 크므로 44MB는 20GB보다 큰 것으로 간주될 수 있습니다.

프로그램을 작성하지 않고 UNIX 명령 및/또는 Bash 기능만 사용하여 이를 수행할 수 있는 방법이 있습니까?

해당 범위의 파일과 폴더 에 관심이 있는 경우 GB다음을 수행할 수 있습니다.

du -sh * | egrep "^\s*\d+(.\d+)?G\s" | sort -g

그것은 보여줄 것이다

2.6G    ski video clips
7.6G    trip 2012.mp4
 12G    trip photos  

TB그러나 OR 을 고려하고 싶다면 MB위의 방법이 작동하지 않습니다. UNIX/Mac OS X 명령을 사용하여 보다 일반적으로 이 작업을 수행할 수 있는 방법이 있습니까?

답변1

http://www.commandlinefu.com/commands/view/12927/list-the-size-in-human-reader-form-of-all-sub-folders-from-the-current-location설명하다:

du -ks $(ls -d */) | sort -nr | cut -f2 | xargs -d '\n' du -sh 2> /dev/null

이것은 Mac에서 테스트되었으며 du한 번만 실행되었습니다. 1024 대신 1K=1000이라는 작은 오류가 있습니다.

du -sk * | sort -n | perl -pe '@SI=qw(K M G T P); s:^(\d+?)((\d\d\d)*)\s:$1.$SI[((length $2)/3)]."\t":e'

관련 정보