Find

如何對人類可讀的大小進行排序

  • June 14, 2019

我基本上是在尋找文件,然後按大小排序。如果我不按人類可讀的大小對大小進行排序,該腳本就可以工作。但我希望大小是人類可讀的。如何對人類可讀的尺寸進行排序?

例如:

ls -l | sort -k 5 -n | awk '{print $9 " " $5}'

這可以按預期工作,我的文件大小以字節為單位遞增:

1.txt 1
test.txt 3
bash.sh* 573
DocGeneration.txt 1131
andres_stuff.txt 1465
Branches.xlsx 15087
foo 23735
bar 60566
2016_stuff.pdf 996850

現在,我希望大小是人類可讀的,所以我在 ls 中添加了一個 -h 參數,現在有些文件亂序了:

ls -lh | sort -k 5 -n | awk '{print $9 " " $5}'
1.txt 1
DocGeneration.txt 1.2K
andres_stuff.txt 1.5K
test.txt 3
Branches.xlsx 15K
foo 24K
bar 60K
bash.sh* 573
2016_stuff.pdf 974K

嘗試sort -h k2

-h, –human-numeric-sort 比較人類可讀的數字(例如,2K 1G)

它是 gnu 排序、BSD 排序等的一部分。

ls內置此功能,使用-S選項並按相反順序排序:ls -lShr

      -r, --reverse
             reverse order while sorting

      -S     sort by file size, largest first

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