格式化字符%s
使stat
打印文件大小(以字节为单位)
# stat -c'%A %h %U %G %s %n' /bin/foo
-rw-r--r-- 1 root root 45112 /bin/foo
ls
可以配置为使用“千位分隔符”打印字节大小数字,即45,112
代替通常的45112
.
# BLOCK_SIZE="'1" ls -lA
-rw-r--r-- 1 root root 45,112 Nov 15 2014
我可以类似地格式化 stat 的输出,以便文件大小具有千位分隔符吗?
stat
我首先使用的原因是,我需要输出 like ls
,但没有时间,因此-c'%A %h %U %G %s %n'
。
或者是否有其他方法可以ls
在没有时间的情况下打印类似的输出?
答案1
指定日期格式,但将其留空,例如。
ls -lh --time-style="+"
生产
-rwxrwxr-x 1 christian christian 8.5K a.out
drwxrwxr-x 2 christian christian 4.0K sock
-rw-rw-r-- 1 christian christian 183 t2.c
答案2
在 GNU 系统上,您可以使用'
GNU 标志printf
:
$ stat -c"%A %h %U %G %'s %n" /bin/foo
-rw-r--r-- 1 root root 45,112 /bin/foo
这记录在man 3 pritnf
:
' For decimal conversion (i, d, u, f, F, g, G) the output is to be grouped
with thousands' grouping characters if the locale information indicates
any. Note that many versions of gcc(1) cannot parse this option and will
issue a warning. (SUSv2 did not include %'F, but SUSv3 added it.)
或者,您可以自己解析它:
$ stat --printf="%A\t%h\t%U\t%G\t%s\t%n\n" a | rev |
awk '{gsub(/.../,"&,",$2); print}' | rev
-rwxr-xr-x 2 terdon terdon 4,096 file