Adicionando o tamanho dos arquivos usando o shell script

2

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
    
por C. Cristi 21.11.2018 / 08:13

5 respostas

2

Você pode fazer isso ...

total=0
for s in $(stat /etc/*.conf | grep Size | cut -f4 -d' '); do 
    total=$(expr $total + $s)
done
    
por 21.11.2018 / 08:20
12
stat -c "%s" /etc/*.conf|paste -sd+|bc -l
    
por 21.11.2018 / 08:22
12

Também algo como pode fazer o trabalho (com awk )

stat -c "%s" /etc/*.conf|awk '{s+=$1} END {print s}'
    
por 21.11.2018 / 08:35
10

com bc

{ stat -c '%s+\' /etc/*.conf ; echo 0 ; } | bc
  • O formato stat adiciona um sinal + e um caractere de continuação após cada tamanho
  • um 0 é anexado no final para fechar o final + pendente
por 21.11.2018 / 11:06
7

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
    
por 21.11.2018 / 09:43