【问题标题】:Disk Usage format [closed]磁盘使用格式[关闭]
【发布时间】:2011-11-26 07:47:58
【问题描述】:

我怎样才能获得人类可读格式-h option但也正确排序的磁盘使用信息。

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

【问题讨论】:

标签: bash shell unix scripting


【解决方案1】:

使用GNU Coreutils >= 7.5

du -hs * | sort -h

在 Mac OS X 上,使用 homebrew 安装 coreutils 很容易:

sudo brew install coreutils

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

【讨论】:

  • 太棒了!!我不知道那种-h比较人类可读的数字(例如,2K 1G)
  • 该死!我也不知道。好资料!!谢谢戴夫!
【解决方案2】:

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

edit 应该要求相同的单位,例如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

【讨论】:

  • 也许是因为单位在 K 和 M 之间变化?然后使用du -k 应该总是给出千字节,所以回答问题
  • 是的,我同意。你应该已经回答了这个问题。这是一个比我更好的答案。 :)
  • 除非我用-h option 进行排序;)
  • 我已经相应地编辑了你的答案
  • 感谢 Basile,我添加了 AWK 脚本。 :)
猜你喜欢
  • 2010-09-10
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多