Como posso encontrar o tamanho de alguns arquivos especificados?
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 }'
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.