Como posso calcular o espaço em disco consumido apenas por alguns arquivos de um diretório de forma recursiva?
Responder1
find -iname '*.jpg' -print0 | du --files0-from=- -h -c | tail -1
-iname
pesquisa sem distinção entre maiúsculas e minúsculas-print0
escreveNUL
em vez de novas linhas--files0-from=-
lêNUL
em vez de novas linhas e lê emstdin
vez de argumentos-h
gera resultados em formato legível por humanos (por exemplo,1K
em vez de1024
)-c
gera um total geral (por exemplo,23G
)tail -1
produzirá apenas o total geral, suprimindo tamanhos de arquivo individuais
Responder2
Com zsh
:
zmodload zsh/stat
stat -LA blocks +blocks -- **/*.jpg(NDoN)
print $(( (${(j[+])blocks} + 0) * 512 ))
Imprimiria o uso cumulativo do disco de todos os arquivos cujo nome termina em .jpg
(incluindo os ocultos com o D
qualificador). Observe que se houver vários links físicos para o mesmo arquivo, o uso do disco será contado várias vezes (isso é diferente do que a maioria du
das implementações faz).
Se alguns dos arquivos forem ou tipodiretório, que contará apenas o uso do disco dos próprios arquivos do diretório, não dos arquivos que podem ser encontrados ao percorrer esses diretórios (outra diferença com du
).