Command-Line

使用 stat 時更改文件大小格式

  • June 2, 2015

格式化字元以字節為單位列印文件%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沒有時間的情況下列印 -like 輸出?

指定日期格式,但將其留空,例如。

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

在 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

引用自:https://unix.stackexchange.com/questions/206995