You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何实现ls命令易读且真实的文件大小输出?有无替代工具?

哈哈,这个痛点我太熟悉了——盯着ls -l里一串数字数位数简直折磨人,硬用--block-size=MB又把几KB的小文件硬生生标成1MB,完全不符合实际情况对吧?别发愁,不管是用ls本身还是换个工具,都能完美解决这个问题!

ls原生参数搞定

其实ls早就内置了智能适配单位的功能,核心就是-h参数(全称human-readable),配合-l一起用就行:

ls -lh

这个命令会自动根据文件大小选最合适的单位:大文件用GB/MB,小文件用KB/B,比如显示成1.2GB56MB3KB456B,既不用数数字费眼睛,小文件也不会被虚标成大单位,完美契合你的需求。

如果有特殊需求,还能加额外参数定制:

  • 要是习惯十进制单位(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

火山引擎 最新活动