Como posso calcular o tamanho de um diretório?

181

Como saber o tamanho de um diretório? Incluindo subdiretórios e arquivos.

Juanjo Conti
fonte

Respostas:

230
du -s directory_name

Ou para obter uma saída legível por humanos:

du -sh directory_name

A -sopção significa que ele não listará o tamanho de cada subdiretório, apenas o tamanho total.

sepp2k
fonte
7
duA unidade padrão atualmente é de blocos de 512 bytes, de acordo com o POSIX, e kilobytes no Linux (a menos que a variável de ambiente POSIXLY_CORRECTesteja configurada) ou com du -k.
Gilles
3
@ Gilles: Boa captura. Eu removi o bit "número de bytes" da minha resposta.
sepp2k
1
trabalhou como prescrito
skidadon 28/05
1
se o diretório é muito grande e tem muitos subdiretórios, leva muito tempo ... quase 1 minuto .. isso é normal? existe uma maneira de obter o tamanho mais rapidamente?
yeahman 15/10/2015
2
Eu precisava calcular o tamanho da minha pasta "bolsa", du -sh bagfuncionou perfeitamente!
António Almeida
7

Embora o uso de um pacote separado, como o ncdu, possa funcionar bem, a mesma comparação de muitas pastas pode ser feita, até certo ponto, fornecendo apenas uma lista de pastas para dimensionar. Por exemplo, para comparar diretórios de nível superior em seu sistema ...

cd /    
sudo du -sh ./*
NFlourish
fonte
2
Mais simplesmente,du -sh /*
roaima
7

O GNU duaceita uma -bopção.

Consulte a manpágina e a infopágina para obter mais ajuda:

-b, --bytesé equivalente a--apparent-size --block-size=1

user2573436
fonte
1
du -csh

-c produz um total geral

Kalpesh Soni
fonte
1
O -cque não faz sentido usar em conjunto com -s, certo? -sexibe apenas o tamanho do diretório especificado, que é o tamanho total do diretório.
Andreas Storvik Strauman
1

Experimentar

du -hax --max-depth=1 / | grep '[0-9]G' | sort -nr

Isso ajuda a encontrar grandes diretórios para filtrar usando du -sh ./*

rollinjack
fonte
0

você também pode usar ls -ldh:

ls -ldh /etc drwxr-xr-x 145 root root 12K 2012-06-02 11:44 /etc

-l é para listagem longa; -d é para exibir informações do diretório, não o conteúdo do diretório, -h é para exibir o tamanho no formato legível pelo huma.

fromnaboo
fonte
4
Isso não está correto, a pessoa que está solicitando está claramente procurando a pegada de um diretório e seu conteúdo no disco. A resposta de @ sepp2k está correta.
blong
1
O comando ls -ldh mostra apenas o tamanho da estrutura de inode de um diretório. A métrica reflete o tamanho da tabela de índice dos nomes dos arquivos, mas não o tamanho real do conteúdo do arquivo no diretório.
Linuxxiaocao 28/03
0

Eu sempre instalo o pacote "ncdu" e vejo toda a saída de todos os diretórios com representação gráfica. Isso ocorre porque geralmente preciso saber o que está ocupando mais espaço em disco em minhas máquinas, independentemente de quanto um único diretório resuma.

Uso: sudo ncdu /(Você não precisa sudode pastas nas quais tenha permissão de leitura).

Levará um tempo para verificar as estatísticas de uso do disco em todo o sistema de arquivos. Ele possui uma boa representação gráfica da linha de comando e inclui navegação no teclado usando as teclas de seta, como ir mais fundo ou mais alto no caminho digitalizado. Você também pode excluir itens pressionando D.

Etescartz
fonte
0

Você pode usar "file-size.sh" na biblioteca do awk Velour :

ls -ARgo "$@" | awk '{q += $3} END {print q}'
Steven Penny
fonte
0

du -hd1

listará em formato legível por humanos os tamanhos de todos os diretórios, por exemplo

656K    ./rubberband
2.2M    ./lame
652K    ./pkg-config
Boris Yakubchik
fonte
0

Eu tentei com o comando abaixo, já que a melhor resposta já foi fornecida

sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

resultado

 sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

679445
Praveen Kumar BS
fonte