本文来自依云'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= " " ; OFS= " " ; } { 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