du -sh

本文来自依云's Blog,转载请注明。

du命令的输出结果要么是不人性化的全部以千字节为单位,要么加上-h参数,显示为1K 234M 2G这样易读的数据。可是,我通常想查看那些大文件/目录,或者那些小文件/目录。单单只用sort命令的话,就不得不在脑海转换那些千字节单位的数据了。做为一个Linux用户,电脑能做的我可不想让人脑来做。Google了一下,发现这个帖子提供了一段代码可行,但是输出效果并不理想,于是我略作更改,写出了以下代码:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sdu () {
  du -sk $@ | sort -n | awk '
BEGIN {
  split("K,M,G,T", Units, ",");
  FS="\t";
  OFS="\t";
}
{
  u = 1;
  while ($1 >= 1024) {
    $1 = $1 / 1024;
    u += 1
  }
  $1 = sprintf("%.1f%s", $1, Units[u]);
  sub(/\.0/, "", $1);
  print $0;
}'
}

这段代码使用sort排序原始数据后,再使用awk来转换数字的单位。使用方法为sdu后加要查看大小的文件/目录就可以了。注意我在代码中加了-s参数,如果希望同时查询子目录的话,需要去掉这个参数。

 

 

 

du -s * | sort -k 1 -g | awk '{print $2}' | xargs du -sh {}

 

 

sort --help 可是有 
-h, --human-numeric-sort 使用易读性数字(例如: 2K 1G) 
参数的,

于是可以直接 du -h | sort -h

posted @ 2018-06-26 11:25  Zeus~  阅读(356)  评论(0编辑  收藏  举报