Você pode fazer isso ...
total=0
for s in $(stat /etc/*.conf | grep Size | cut -f4 -d' '); do
total=$(expr $total + $s)
done
Eu quero adicionar e fazer eco da soma de vários arquivos usando o shell script. Como eu começo? Eu tenho uma lista deles assim:
$ stat /etc/*.conf | grep Size | cut -f4 -d' '
123
456
789
101112
stat -c "%s" /etc/*.conf|paste -sd+|bc -l
Também algo como pode fazer o trabalho (com awk
)
stat -c "%s" /etc/*.conf|awk '{s+=$1} END {print s}'
bc
{ stat -c '%s+\' /etc/*.conf ; echo 0 ; } | bc
stat
adiciona um sinal +
e um caractere de continuação após cada tamanho 0
é anexado no final para fechar o final +
pendente
A maneira mais direta é usar du -bc
:
$ du -bc /etc/*.conf
5139 /etc/man_db.conf
393 /etc/nsswitch.conf
5532 total
Se você precisar extrair apenas o número de bytes, canalize a saída para awk
:
$ du -bc /etc/*.conf | awk 'END { print $1 }'
5532
Tags shell shell-script