如何实现ls命令易读且真实的文件大小输出?有无替代工具?
哈哈,这个痛点我太熟悉了——盯着ls -l里一串数字数位数简直折磨人,硬用--block-size=MB又把几KB的小文件硬生生标成1MB,完全不符合实际情况对吧?别发愁,不管是用ls本身还是换个工具,都能完美解决这个问题!
用
ls原生参数搞定 其实ls早就内置了智能适配单位的功能,核心就是-h参数(全称human-readable),配合-l一起用就行:
ls -lh
这个命令会自动根据文件大小选最合适的单位:大文件用GB/MB,小文件用KB/B,比如显示成1.2GB、56MB、3KB、456B,既不用数数字费眼睛,小文件也不会被虚标成大单位,完美契合你的需求。
如果有特殊需求,还能加额外参数定制:
- 要是习惯十进制单位(1MB=1000KB而非1024KB),就加
--si:ls -lh --si - 想按文件大小排序,大的在前,就加
-S:ls -lhS
更强大的替代工具
如果觉得ls的定制性不够,还有几个超好用的现代文件列表工具:
- exa:堪称
ls的现代升级版,默认就会智能显示文件大小,还支持彩色图标、树形结构、Git状态等功能。安装后直接敲exa -l,输出里的文件大小就是自动适配的,完全不用额外参数。 - lsd:和exa类似,主打美化和易用性,默认输出就包含易读的文件大小,界面更炫酷,还支持自定义主题。
- du:如果只是想查看单个文件或目录的大小,
du -h 文件名/目录名也能智能显示单位,比如du -h ~/Downloads会告诉你下载文件夹是几GB/MB,小文件也会显示正确的KB/B。
举个ls -lh的实际输出例子,完全符合你要的效果:
-rw-r--r-- 1 john staff 456B Aug 10 12:34 note.txt -rw-r--r-- 1 john staff 32KB Aug 10 12:35 report.pdf -rw-r--r-- 1 john staff 1.2GB Aug 10 12:36 backup.iso
内容的提问来源于stack exchange,提问作者Caleb




