
フォーマット文字は印刷ファイルのサイズをバイト単位で%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
最初に使用した理由は、と同じ出力が必要なのに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