Find
如何對人類可讀的大小進行排序
我基本上是在尋找文件,然後按大小排序。如果我不按人類可讀的大小對大小進行排序,該腳本就可以工作。但我希望大小是人類可讀的。如何對人類可讀的尺寸進行排序?
例如:
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