Tamanho real do arquivo no mac os x

4

Eu tenho um grande número de pastas, cada uma contendo alguns arquivos de tamanhos variados (de alguns bytes a 400kb ou mais), principalmente os menores. Preciso obter o tamanho real (não o uso do disco) dessas pastas. Existe alguma maneira de fazer isso com um comando como 'du'?

    
por Jonatan Hedborg 27.01.2010 / 17:08

4 respostas

3

É bastante normal que ls mostre os tamanhos reais dos arquivos por padrão, e eu acabei de confirmar isso. Então:

ls -l <yourfiles>

Para totalizar os totais:

ls -l <yourfiles> | awk '{sum+=$5} END {print sum}'

Se a sua conta precisar incluir arquivos em subdiretórios, a solução comum é usar find para invocar ls :

find <yourdir>/. -type f -exec ls -l '{}' \; | awk '{sum+=$5} END {print sum}'
    
por 27.01.2010 / 18:39
2

Você poderia pedir o total do Mac-world (incluindo forks de recursos) assim:

# Put this in a shell function or script, 'macTotal'
osascript - "${1:-.}" <<\EOF | perl -Mbignum -lpe '$_+=0,"\n"'
on run {arg}
    alias POSIX file arg
    tell application "System Events" to get size of result
end run
EOF

$ macTotal ~/Library
4465742628

O AppleScript imprime o número em notação científica. O código Perl é uma maneira desleixada de expandir a notação científica.

Se você estiver certo em ler os números da GUI, basta abrir a janela Informações de uma pasta no Localizador . O tamanho relatado é o mesmo que Eventos do Sistema fornece no AppleScript.

Se você se preocupa apenas com garfos de dados, eu iria com algo semelhante a pra resposta, mas usando stat ao invés de ls e xargs ao invés de -exec para um pouco mais de eficiência.

$ find . -type f -print0 | xargs -0 stat -f %z | awk '{t+=$1}END{print t}'
4461971024
    
por 28.01.2010 / 11:38
1

Você pode executar wc -c em cada um dos arquivos. Isso deve retornar o número de caracteres em cada arquivo. Pode demorar um pouco, já que ele realmente lê cada arquivo e conta os caracteres.

    
por 27.01.2010 / 19:29
1

Para ver o total de apenas uma pasta específica, use:

du -s /path_to/specific_folder/

Para ver o total de cada pasta em uma pasta específica, use um asterisco:

du -s /path_to/specific_folder/*

Se você não possui todos os arquivos nesses diretórios, use o sudo para ter certeza de que tudo é contado.

Edit: Ah, eu entendo o que você está perguntando agora. Você quer:

du -sk /path_to/specific_folder/

    
por 27.01.2010 / 18:37