Especifique o formato da data, mas deixe-a vazia, por exemplo.
ls -lh --time-style="+"
Produz
-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
O caractere de formatação %s
faz stat
imprimir o tamanho do arquivo em bytes
# stat -c'%A %h %U %G %s %n' /bin/foo
-rw-r--r-- 1 root root 45112 /bin/foo
ls
pode ser configurado para imprimir o número do tamanho do byte com "mil-separador", ou seja, 45,112
em vez do usual 45112
.
# BLOCK_SIZE="'1" ls -lA
-rw-r--r-- 1 root root 45,112 Nov 15 2014
Posso formatar a saída da estatística de forma semelhante, para que o tamanho do arquivo tenha um separador de milhar?
A razão pela qual estou usando stat
é que preciso produzir como ls
, mas sem tempo, portanto -c'%A %h %U %G %s %n'
.
Ou existe alguma outra maneira de imprimir a saída ls
-like sem o tempo?
Em um sistema GNU, você pode usar o sinal '
do GNU printf
:
$ stat -c"%A %h %U %G %'s %n" /bin/foo
-rw-r--r-- 1 root root 45,112 /bin/foo
Isso está documentado em 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.)
Como alternativa, você pode analisar isso em si mesmo:
$ 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
Tags command-line coreutils ls files stat