磁盘使用格式

时间:2011-11-26 07:47:59

标签: bash shell unix scripting

如何获取人类可读格式-h option的磁盘使用情况信息,但也可以正确排序。

现在,如果我使用-h option,它将无法正确排序,即G M K不按升序排列。

2 个答案:

答案 0 :(得分:5)

使用GNU Coreutils >= 7.5

du -hs * | sort -h

在Mac OS X上,使用自制软件安装coreutils很容易:

sudo brew install coreutils

来自https://serverfault.com/questions/62411/how-can-i-sort-du-h-output-by-size

答案 1 :(得分:1)

我不太明白这个问题。为什么不排序?

编辑应该询问相同的单位,例如始终为du -k

的千字节
[jaypal~/Temp]$ du -k ./* | sort -nr
120K    ./GTP
108K    ./scripts
 36K    ./backup
 24K    ./GTP/ParserDump
 20K    ./perl
4.0K    ./outfile
4.0K    ./file1
4.0K    ./file
4.0K    ./colors
4.0K    ./GTP/ParserDump/ParserDump

如果您需要使用“人性化”单位输出,请在排序后进行转换(可能使用awk)。

AWK脚本:这是我们对文件进行排序的方式..不知道我们是否可以使用-h option,但这有点像模拟-h option。结果更准确;)

[jaypal~/Desktop/Reference]$ du -h ./* | sort -nr
584K    ./scan 1.pdf
544K    ./Personal/Resume
 44K    ./Membership.xlsx
 16M    ./Personal
 16K    ./Membership Transmittal Template.xlsx
 14M    ./Personal/Docs
2.4M    ./Work Docs
1.6M    ./Work Docs/Work
1.5M    ./Personal/Raa

[jaypal~/Desktop/Reference]$ du -k ./* | sort -nr | awk '{split("KB,MB,GB",size,",");}{x = 1;while ($1 >= 1024) {$1 = $1 / 1024;x = x + 1} $1 = sprintf("%-4.2f%s", $1, size[x]); print $0;}'
15.92MB ./Personal
13.82MB ./Personal/Docs
2.35MB ./Work Docs
1.59MB ./Work Docs/Work
1.46MB ./Personal/Raa
584.00KB ./scan 1.pdf
544.00KB ./Personal/Resume
44.00KB ./Membership.xlsx
16.00KB ./Membership Transmittal Template.xlsx