![파일 및 폴더의 크기(정렬)를 긴 정수가 아닌 MB, GB 단위로 어떻게 확인할 수 있나요? [복사]](https://linux55.com/image/63385/%ED%8C%8C%EC%9D%BC%20%EB%B0%8F%20%ED%8F%B4%EB%8D%94%EC%9D%98%20%ED%81%AC%EA%B8%B0(%EC%A0%95%EB%A0%AC)%EB%A5%BC%20%EA%B8%B4%20%EC%A0%95%EC%88%98%EA%B0%80%20%EC%95%84%EB%8B%8C%20MB%2C%20GB%20%EB%8B%A8%EC%9C%84%EB%A1%9C%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%99%95%EC%9D%B8%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
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'