我基本上是在寻找文件,然后按大小排序。如果我不按照人类可读的大小对脚本进行排序,那么该脚本就可以工作。但我希望尺寸能被人类读取。如何排序人类可读的尺寸?
例如:
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
ls
输出的第5列
du
代替ls
可能是一个好主意。
find
的-printf
其%p
和%s
格式化器(后跟一个尺寸的‘人源化’)。
-k 5
- 这是如何运作的?