web-development-kb-pt.site

Como posso calcular o tamanho de um diretório?

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

189
Juanjo Conti
du -s directory_name

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

du -sh directory_name

O -s opção significa que não listará o tamanho de cada subdiretório, apenas o tamanho total.

245
sepp2k

GNU du leva um -b opção.

Veja man page e info page para obter mais ajuda:

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

7
user2573436

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 uma lista de pastas para o tamanho desejado. Por exemplo, para comparar diretórios de nível superior em seu sistema ...

cd /    
Sudo du -sh ./*
7
NFlourish
du -csh

-c produz um total geral

1
Kalpesh Soni

Tentar

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

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

1
rollinjack

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

ls -ARgo "[email protected]" | awk '{q += $3} END {print q}'
1
Steven Penny

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 eu preciso saber o que está ocupando mais espaço em disco nas minhas máquinas, independentemente de quanto um único diretório resuma.

Uso: Sudo ncdu / (Você não precisa Sudo para pastas nas quais possui 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 representação gráfica da linha de comando Nice e inclui navegação no teclado usando as teclas de seta, como ir mais fundo ou mais alto no caminho verificado Você também pode excluir itens pressionando D.

0
Etescartz

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
0
Boris Yakubchik

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
0
Praveen Kumar BS

A pergunta original perguntou o tamanho, mas não especificou se era o tamanho do disco ou o tamanho real dos dados.

Descobri que o cálculo do 'du' pode variar entre servidores com a mesma partição de tamanho usando o mesmo sistema de arquivos. Se as características do sistema de arquivos diferem, isso faz sentido, mas, caso contrário, não consigo entender o porquê. A resposta 'l | | awk "que Steven Penny deu fornece uma resposta mais consistente, mas ainda assim me deu resultados inconsistentes com listas de arquivos muito grandes.

O uso de 'find' deu resultados consistentes para mais de 300.000 arquivos, mesmo ao comparar um servidor usando XFS e outro usando EXT4. Portanto, se você deseja conhecer o total de bytes de dados em todos os arquivos, sugiro que seja uma boa maneira de obtê-lo:

find /whatever/path -type f -printf "%s\n"|awk '{q+=$1} END {print q}'
0
Angelo Babudro

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.

0
fromnaboo