Estou procurando uma linha única útil para calcular o tamanho médio do arquivo em um diretório.
O que eu quero é:
tamanho de todos os arquivos / número de arquivos no diretório
bash
command-line
taffer
fonte
fonte
Respostas:
Com FreeBSD / Mac OS X
find
,stat
eawk
(não exatamente um prático one-liner embora):fonte
-v var=value
,awk
vai expandir seqüências ANSI C como\n
,\r
... Enquanto conchas fazer a exportaçãoPWD
, assim você pode usarENVIRON["PWD"]
noawk
que não tem esse tipo de problema para diretórios com barras invertidas em seu nome.find . -type f -exec stat -f%z {} +|awk '{s+=$0}END{print s/NR}'
.Com o GNU find:
Ou para uso do disco:
Observe que, se houver vários hardlinks do mesmo arquivo, isso contará o uso do disco várias vezes.
O acima mencionado conta apenas arquivos regulares, não links simbólicos ou diretórios ou outros arquivos especiais. Inclui arquivos ocultos.
O mesmo com os
zsh
builtins:fonte
Uma solução simplista em uma linha:
Ele tem uma trapaça sintática, considerando apenas as
ls
linhas de saída que começam com '-', que devem constituir dados para arquivos regulares.fonte
apenas para arquivos em um diretório, ignorando os subdiretórios:
Ou para contar todos os arquivos, incluindo arquivos em subdiretórios:
fonte
du -s
adicionará o uso do disco (não o tamanho) de todos os arquivos e diretórios e outros arquivos não regulares , excluindo links físicos extras para o mesmo arquivo, enquantofind
contará todos os arquivos regulares. Além disso, nomes de arquivos com caracteres de nova linha serão contados várias vezes.du -S
é específico do GNU.du -s
relatará setores ou kilobytes, dependendo do sistema operacional.