Existe um comando simples para exibir o tamanho total agregado (uso do disco) de todos os arquivos em um diretório (pasta)?
Eu tentei estes, e eles não fazem o que eu quero:
ls -l
, que exibe apenas o tamanho dos arquivos individuais em um diretório, nemdf -h
, que exibe apenas o espaço livre e usado em meus discos.
O comando
du
"resume o uso do disco de cada ARQUIVO, recursivamente para diretórios", por exemplo,-h
é obter os números "legíveis para humanos", por exemplo, obter140M
em vez de143260
(tamanho em KBytes)-s
é para resumo (caso contrário, você obterá não apenas o tamanho da pasta, mas também tudo na pasta separadamente)Conforme você está usando
-h
, você pode classificar os valores legíveis por humanos usandoO
-h
sinalizador emsort
irá considerar os valores de tamanho "Human Readable".Se quiser evitar listar recursivamente todos os arquivos e diretórios, você pode fornecer o
--max-depth
parâmetro para limitar quantos itens são exibidos. Mais comumente,--max-depth=1
Recentemente, encontrei uma ótima ferramenta interativa baseada em ncurses, que rapidamente fornece uma visão geral sobre os tamanhos dos diretórios. Procurei por esse tipo de ferramenta por anos.
Pense nisso como baobá para a linha de comando:
Isso encontra o tamanho recursivamente e o coloca ao lado do nome de cada pasta, junto com o tamanho total na parte inferior, tudo no formato humano
Apreciar!
Mais informações sobre esse comando aqui
Abaixo está o que estou usando para imprimir o total, a pasta e o tamanho do arquivo:
Detalhes
Resultado
tree
é outro comando útil para este trabalho:Basta instalá-lo via
sudo apt-get install tree
e digite o seguinte:Da árvore do homem :
As respostas tornaram óbvio que
du
é a ferramenta para encontrar o tamanho total de um diretório. No entanto, há alguns fatores a serem considerados:Ocasionalmente,
du
a saída pode ser enganosa porque relata o espaço alocado pelo sistema de arquivos, que pode ser diferente da soma dos tamanhos dos arquivos individuais. Normalmente, o sistema de arquivos alocará 4096 bytes para um arquivo, mesmo que você armazene apenas um caractere nele!Diferenças de saída devido à potência de 2 e potência de 10 unidades. A
-h
opção paradu
divide o número de bytes por 2^10 (1024), 2^20 (1048576) etc para fornecer uma saída legível por humanos. Muitas pessoas podem estar mais acostumadas a ver potências de 10 (por exemplo, 1K = 1.000, 1M = 1.000.000) e se surpreender com o resultado.Para encontrar a soma total dos tamanhos de todos os arquivos em um diretório, em bytes, faça:
Exemplo:
Você pode usar a ferramenta Poeira:
Meu exemplo é do Windows, mas Linux e Apple também são suportados:
https://github.com/bootandy/dust
Para ver os tamanhos de todos os arquivos e diretórios, use
(talvez como "você tinha 1")
-h
: tamanhos legíveis por humanos-a
: mostra arquivos, não apenas diretórios-d1
: mostra os totais apenas na profundidade 1, ou seja, o conteúdo do diretório atualPara o diretório atual, o argumento do diretório pode ser deixado de lado.
du -sh dir/*
tem o mesmo efeito, mas não mostra arquivos e diretórios ocultos devido ao shell globbing.Estou condicionado ao
ll
comando que é alias parals -alF
. Falta apenas uma contagem de arquivos e o tamanho dos arquivos na parte inferior. Joguei comdu
etree
mas não consegui os totais que precisava. Então eu crieilll
para fazer isso por mim.No seu
~/.bashrc
lugar o seguinte:Salve o arquivo e use-o como recurso
. ~/.bashrc
(ou você pode reiniciar seu terminal).Saída de amostra
O bom
ll
da saída são as cores. Isso é mantido comlll
, mas perdido ao usarfind
oudu
:TL;DR
Uma função de bônus que você pode adicionar
~/.bashrc
é chamadaBytesToHuman()
. Isso faz o que a maioria dos usuários de console esperaria converter grandes números para MiB, GiB, etc:Em seguida, vire o comentário entre duas linhas na
lll ()
função para ficar assim:Agora sua saída fica assim:
Como sempre, não se esqueça de fornecer recursos sempre que fizer
. ~/.bashrc
alterações. (Ou reinicie o terminal, é claro)PS - Duas semanas em auto-quarentena finalmente me deram tempo para trabalhar neste objetivo de cinco anos.