Preciso obter o tamanho do diretório no terminal para fins de assinatura. Estou usando o seguinte comando:
du -s /path/to/dir
Estou multiplicando o resultado pelo tamanho tradicional do bloco UNIX (512 bytes) e obtendo o tamanho real do diretório em bytes. No entanto, a janela de diálogo "Obter informações" do Finder mostra o tamanho um pouco menor que o calculado com o comando terminal. E parece que é reproduzível em qualquer pasta / pacote. o que estou perdendo?
fonte
actual
ouapparent
. (Veja também minha explicação atualizada).Sobre o Mac OS X e o Finder (no Snow Leopard, versão 10.6.8), observei o seguinte.
bash
(1)) abaixo.Até agora, vi que meus números 'quantificados' são iguais aos números 'quantificados' no Finder .
BLOCKSIZE
definida no meu shell, mas testei (agora um pouco) as versões e os valores padrão para$BLOCKSIZE
os mesmos valores.A única coisa que posso dizer é que eu me aproximo apenas contando arquivos (excluindo assim o diretório ~ 'meta-index / cabeçalho do sistema de arquivos' ~ dados) e que o mais próximo que eu chego é o seguinte.
du
(1) nem (gnu)gdu
(1) parecem contar atributos estendidos (xattr
)E então eu devo apenas trocadilho 'Run o caminho e fazer a matemática'
Paz para fora e boa noite fo'real desta vez.
fonte
No meu sistema Ubuntu, usando ext4,
du -b file
fornece o tamanho em bytes de um arquivo real edu -b dir
o tamanho em bytes do (s) arquivo (s) + sobrecarga de diretório. A sobrecarga é, no meu caso, múltiplos de 4096 bytes.Essa sobrecarga aumenta à medida que o número de arquivos aumenta.
Nota: mesmo se os arquivos forem excluídos, a sobrecarga do diretório permanecerá no nível mais alto em que estava antes dos arquivos serem excluídos.
Não tentei reiniciar, para ver se ele reverte, mas em ambos os casos, isso significa que o tamanho do diretório varia dependendo das circunstâncias históricas.
Classificar o tamanho de cada arquivo pode ser a melhor opção para obter um valor exato do tamanho total dos arquivos .
O script a seguir totaliza todos os tamanhos de arquivo (em bytes).
Para o OS X, se você não tiver o
-b
opton para 'du', poderá usá-lostat
. (Se tiver:) ... A linha comentada mostra astat
alternativa do Ubuntu paradu -b
;fonte
du -b
e um diferentestat
. Seu script não é portátil fora do Linux de qualquer maneira.coreutils
para obter a versão GNU dodu
asgdu
. Portanto, não é exatamente portátil, mas pode ser útil para as pessoas no OS X obterem as versões GNU de alguns utilitários principais.Soma todos os arquivos em um diretório:
OSX:
find dir ! -type d -print0 | xargs -0 stat -f '%z' | awk '{sum += $1} END{print sum}'
Linux:
find dir ! -type d -printf "%s\n" | awk '{sum += $1} END{print sum}'
fonte
find: unrecognized: -printf
. Alpine image