排序人类可读的文件大小

not*_*oop 17 linux mac unix sorting

如何使用人类可读的文件大小排序、考虑大小标识符(G、M、K)的数字排序对列表进行排序?du -sh例如,我可以对“ ”输出进行排序吗?

问题:考虑列出文件/文件夹并按大小对其进行排序的问题。您可以通过运行来实现:

du -s * | sort -n
Run Code Online (Sandbox Code Playgroud)

这列出了按大小排序的文件/文件夹。但是,打印的大小值以字节(或兆字节或千兆字节,如果您选择)为单位。

能够根据人类可读的值进行排序是可取的,所以我可以运行类似于

du -sh * | <human-readable file sort>
Run Code Online (Sandbox Code Playgroud)

并在 2.0M 后显示 1.5GB 文件夹。

Jas*_*son 31

使用 GNU coreutils >= 7.5:

du -hs * | 排序 -h

(取自这个服务器故障问题

手册页

编辑:您可以使用 GNU 版本du --version以及sort --version是否使用 GNU 版本检查您的版本。如果您使用自制软件,则可能需要使用gdugsort

  • OSX 没有这个选项。您可以使用自制软件来`brew install coreutils`(它在所有 coreutils 命令前面加上一个 'g')。然后你可以做`gdu -hs * | gsort -h`。 (8认同)

小智 4

Afaik,没有标准命令可以执行此操作。

有多种解决方法,当在 Stack Overflow 上提出相同的问题时讨论了这些解决方法:How can I sort du -h output by size