如何判断文件和文件夹的大小(已排序)并以 MB、GB 为单位,而不是长整数?

如何判断文件和文件夹的大小(已排序)并以 MB、GB 为单位,而不是长整数?

在 Mac 上,使用 Bash,我倾向于这样做

du -sh *

告知当前目录中文件和文件夹的大小,以 MB 和 GB 为单位。但如果我想按大小对它们进行排序,我可能会这样做

du -sh * | sort -g

它不会很好地工作,因为没有考虑MG(因此 44MB 可能被认为大于 20GB,因为 44 大于 20)。

有没有一种方法可以不编写程序而仅使用 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  

但如果要考虑TBor的MB话,那么上面的就不行了。有没有办法使用 UNIX / Mac OS X 命令更普遍地做到这一点?

答案1

http://www.commandlinefu.com/commands/view/12927/list-the-size-in- human-readable-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一次。它有一个小错误,1K=1000 而不是 1024:

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'

相关内容