如何按大小对 du -h 输出进行排序

如何按大小对 du -h 输出进行排序

我需要获取人类可读的 du 输出列表。

但是,du没有“按大小排序”选项,并且管道sort不适用于人类可读的标志。

例如,运行:

du | sort -n -r 

按大小(降序)输出排序的磁盘使用情况:

du |sort -n -r
65108   .
61508   ./dir3
2056    ./dir4
1032    ./dir1
508     ./dir2

但是,使用人类可读的标志运行它,无法正确排序:

du -h | sort -n -r

508K    ./dir2
64M     .
61M     ./dir3
2.1M    ./dir4
1.1M    ./dir1

du -h 有谁知道按大小排序的方法吗?

答案1

作为GNU coreutils 7.5于 2009 年 8 月发布,sort允许一个-h参数,该参数允许如下类型的数字后缀du -h

du -hs * | sort -h

如果您使用的排序不支持-h,您可以安装 GNU Coreutils。例如在较旧的 Mac OS X 上:

brew install coreutils
du -hs * | gsort -h

sort 手动的

-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)

答案2

du | sort -nr | cut -f2- | xargs du -hs

答案3

我使用了一个非常有用的工具,叫做北卡罗莱纳大学旨在查找并删除那些令人讨厌的高磁盘使用率文件夹和文件。它基于控制台,快速且轻便,并且在所有主要发行版上都有软件包。

答案4

du -k * | sort -nr | cut -f2 | xargs -d '\n' du -sh

相关内容