本文来自依云's Blog,转载请注明。
du
命令的输出结果要么是不人性化的全部以千字节为单位,要么加上-h
参数,显示为1K 234M 2G这样易读的数据。可是,我通常想查看那些大文件/目录,或者那些小文件/目录。单单只用sort
命令的话,就不得不在脑海转换那些千字节单位的数据了。做为一个Linux用户,电脑能做的我可不想让人脑来做。Google了一下,发现这个帖子提供了一段代码可行,但是输出效果并不理想,于是我略作更改,写出了以下代码:
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
参数,如果希望同时查询子目录的话,需要去掉这个参数。
Oct 11, 2010 07:42:07 PM
du -s * | sort -k 1 -g | awk '{print $2}' | xargs du -sh {}
Oct 11, 2010 08:26:49 PM
呵呵,我见过这个方法。但我不想du两次。虽说有缓存,但总觉得磁盘还是会比较难受。
Oct 11, 2010 09:58:52 PM
呵呵,考虑得挺仔细的,你的博客不错~~
Sep 08, 2011 01:08:33 AM
乃们肯去辛苦看 script 却不肯看看 sort 的参数么,
sort --help 可是有
-h, --human-numeric-sort 使用易读性数字(例如: 2K 1G)
参数的,
于是可以直接 du -h | sort -h
Sep 08, 2011 02:16:21 PM
我火星了。。。
Apr 01, 2013 07:31:14 PM
sort -h 这个。。。。。。比如sort 5.97 不支持-h 参数。
所以。。。还是仙子的方法比较通用
Apr 01, 2013 09:08:11 PM
好老的 sort = =
不过,OpenBSD 的 sort 也是不支持的。我在 FreeBSD 上找到个 5.3.0-20040812-FreeBSD 版本的……
Jul 11, 2017 04:44:38 PM
哈哈。。