Como posso saber o tamanho total obtido por tipos específicos de arquivos no meu disco rígido?

3

Como o título diz, eu gostaria de saber se há um comando que pode me dizer quanto de armazenamento são os arquivos .jpg (por exemplo). Algo como se eu fizesse find / -iname "*.jpg" , o que pode adicionar o tamanho de cada arquivo encontrado e gerar um total.

    
por VaTo 02.07.2016 / 22:03

2 respostas

4
find ./path/to/your/drive -type f -name '*.jpg' -exec du -ch {} +

Ou muito mais rápido

find /path/to/your/drive -name "*.jpg" -print0 | du -ch --files0-from=-

Ou simplesmente,

du -ch /path/to/your/drive/*.jpg | grep total

Ou com a ajuda de awk

find /path/to/your/drive -iname "*.jpg" -ls | awk '{total += $7} END {print total}'

No tamanho do arquivo do meu sistema aparece no sétimo campo, se for diferente para você, ajuste de acordo.

Como solicitado pelo OP no comentário, se você quiser encontrar todas as imagens de um diretório e tamanho total, você pode usar este comando (sugerido por @ Stéphane Chazelas)

 find . -type f -exec file --mime-type {} + | sed -n 's|: image/[^[:blank:]]*$||p' | tr '\n' '
 du -shc $(find . -name '*' -exec file {} \; | grep -o -P '^.+: \w+ image' | cut -d':' -f1) | grep total
' | du --files0-from=- -hc

Ou

find ./path/to/your/drive -type f -name '*.jpg' -exec du -ch {} +
    
por 02.07.2016 / 22:10
1

Como alternativa, você pode fazer isso usando apenas POSIX:

find . -type f -name "*.jpg" -exec du -sk {} \; |
  awk 'BEGIN{total=0};{total += $1}; END{printf "%.3f MB\n", total / 1024}'

Leitura adicional:

por 02.07.2016 / 22:43