Command-Line

你如何按大小對du輸出進行排序?

  • November 25, 2020

你如何du -sh /dir/*按大小排序?我讀過一個網站說使用| sort -n,但這顯然是不對的。這是一個錯誤的例子。

[~]# du -sh /var/* | sort -n
0       /var/mail
1.2M    /var/www
1.8M    /var/tmp
1.9G    /var/named
2.9M    /var/run
4.1G    /var/log
8.0K    /var/account
8.0K    /var/crash
8.0K    /var/cvs
8.0K    /var/games
8.0K    /var/local
8.0K    /var/nis
8.0K    /var/opt
8.0K    /var/preserve
8.0K    /var/racoon
12K     /var/aquota.user
12K     /var/portsentry
16K     /var/ftp
16K     /var/quota.user
20K     /var/yp
24K     /var/db
28K     /var/empty
32K     /var/lock
84K     /var/profiles
224M    /var/netenberg
235M    /var/cpanel
245M    /var/cache
620M    /var/lib
748K    /var/spool

如果你有 GNU coreutils(在大多數 Linux 發行版中很常見),你可以使用

du -sh -- * | sort -h

-h選項告訴sort輸入是人類可讀的格式(帶單位的數字;基於 1024,因此 1023 被認為小於 1K,這恰好與 GNUdu -h所做的匹配)。

此功能於 2009 年 8 月添加到 GNU Core Utilities 7.5 中

筆記:

如果您使用的是舊版本的 Mac OSX,則需要安裝 coreutils 和brew install coreutils,然後gsort作為sort.

較新版本的 macOS(在 Mojave 上驗證)本機支持sort -h

引用自:https://unix.stackexchange.com/questions/4681