在Unix中以可读格式格式化文件大小

时间:2013-09-04 04:18:13

标签: file unix usability

当我ls -l时,我得到了

-rw-r--r--   1 jboss    admin  **26644936** Sep  1 21:23 MyBig.war

如何按以下方式打印

-rw-r--r--   1 jboss    admin  **26,644,936** Sep  1 21:23 MyBig.war

2 个答案:

答案 0 :(得分:3)

格式化ls输出的正确方法是指定BLOCK_SIZE

话说:

BLOCK_SIZE="'1" ls -l

将达到您想要的结果。

从以上链接引用:

  

某些GNU程序(至少dfduls)在“块”中显示大小。   您可以调整块大小和显示方法以制作大小   更容易阅读。


  

‘'’开头的块大小规范会导致输出大小   显示有数千个分隔符。

答案 1 :(得分:1)

使用sed

$ ls_output='-rw-r--r--   1 jboss    admin  26644936 Sep  1 21:23 MyBig.war'
$ echo $ls_output | sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'
-rw-r--r--   1 jboss    admin  26,644,936 Sep  1 21:23 MyBig.war

以上sed命令重复将最后4位####替换为#,###

  • -e :a:为a命令创建一个名为t的标签。
  • ta:如果替换成功,请跳至a