Linux

如何按大小對 du -h 輸出進行排序

  • May 24, 2021

我需要獲取人類可讀的 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 按大小排序的方法嗎?

從2009 年 8 月發布的GNU coreutils 7.5sort開始,允許使用一個-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)

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

引用自:https://serverfault.com/questions/62411