Pergunta

O comando tenta resumir os tamanhos:

find . -iname "*.dmg" -exec du -sh '{}' \; 3&> /dev/null |
    awk '{print $1}' | summming_up_program???

Você pode encontrar uma solução mais simples?

Ubuntu Solution. Agradecimentos para o Awk-end para Ayman.

find . -iname "*.dmg" -printf '%b\n' |
    awk 'BEGIN { s = 0 } {s += $1 } END { print "%dMB", s / 2^20 }'
Foi útil?

Solução

find . -iname '*.dmg' -exec stat -f '%z' '{}' \; |
     awk 'BEGIN { s = 0 } {s += $1 } END { print s }'

stat é usado para obter o tamanho de um arquivo. awk é usado para resumir todos os tamanhos de arquivo.

Editar:

Uma solução que não stat garfo:

find . -iname '*.dmg' -ls | 
     awk 'BEGIN { s = 0 } {s += $7 } END { print s }'

Outras dicas

wc -c *.pyc | tail -n1 | cut -f 1 -d ' '

Pode ser mais rápido, então cat'ing os arquivos através do tubo. wc -c não conta os bytes, ele recupera o tamanho do inode ... ou o meu HDD tem uma velocidade de leitura de 717 GB / s: -)

$ time wc -c very-big.pcap
5394513291 very-big.pcap
real    0m0.007s
user    0m0.000s
sys     0m0.000s

cat * .dmg | wc -c

gato copia todos os arquivos para stdout, e conta wc do tamanho do que foi despejado. Nada é gravado no disco.

Não tão eficiente, mas mesmo eu posso entendê-lo:)

Avançado comando não bifurcação de Ayman:

find . -iname '*.dmg' -ls 3&> /dev/null | 
      awk 'BEGIN { s = 0 } {s += $7 } END { print "%dGB", s / 2^30 }'

Graças à Ayman para corrigir a minha resposta inicial.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top