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