Digamos que eu queira obter o tamanho de cada diretório de um sistema de arquivos Linux. Quando uso ls -la
, não recebo realmente o tamanho resumido das pastas.
Se eu usar df
, obtenho o tamanho de cada sistema de arquivos montado, mas isso também não me ajuda. E com du
o tamanho de cada subdiretório e o resumo de todo o sistema de arquivos.
Mas eu quero ter apenas o tamanho resumido de cada diretório na pasta ROOT do sistema de arquivos. Existe algum comando para conseguir isso?
--total
bandeira foi útil para mim. Por exemplodu -sh --total applications/*
. askubuntu.com/a/465436/48214Respostas:
Isso faz o que você está procurando:
O que isto significa:
-s
para fornecer apenas o total para cada argumento da linha de comando.-h
para sufixos legíveis por humanos, comoM
megabytes eG
gigabytes (opcional)./*
simplesmente se expande para todos os diretórios (e arquivos) em/
.Nota: dotfiles não estão incluídos; corra
shopt -s dotglob
para incluí-los também.Também é útil classificar por tamanho:
Aqui:
-h
garante quesort
interpreta os sufixos legíveis por humanos corretamente.fonte
shopt -s dotglob
incluí-los na contagem./*
, por exemplo,./
para o diretório atual ou./*
para cada item no diretório atual../*/
para obter apenas subpastas e nem todos os itensdu -sh /* | sort -h
sort
não possui-h
, você também deve deixá-lo de foradu
, caso contrário a classificação misturará quilo / mega / gigabytes.du -s /* | sort -nr
.Muitas vezes, preciso encontrar os maiores diretórios; portanto, para obter uma lista classificada com os 20 maiores diretórios, faço isso:
Nesse caso, os tamanhos serão relatados em megabytes.
fonte
Eu gosto de usar o Ncdu para isso, você pode usar o cursor para navegar e detalhar a estrutura de diretórios que funciona muito bem.
fonte
b
para soltar em um shell no diretórioAs respostas existentes são muito úteis, talvez um iniciante (como eu) ache isso útil também.
Loop muito básico, mas para mim esse foi um bom começo para algumas operações relacionadas a outros tamanhos:
Muito parecido com a primeira resposta e quase o mesmo resultado que 1.), mas levei algum tempo para entender a diferença de * para ./* se em um subdiretório:
fonte
for each
não funciona, pois anexa caracteres do console (por exemplo\033[
) à lista de pastasfor each
. não vai funcionarA
du
chamada a seguir deve funcionar em sistemas BSD:fonte
du
(Ubuntu 10.4) não tem uma-d
opção. Em que sistema você está?du -sk /*
. Eu odeio as-k
coisas muuuuito. O Linux é-h
totalmente legal.--max-depth
Isso não é fácil. O
du
comando mostra arquivos e pastas (padrão) ou apenas os tamanhos de todos os itens especificados na linha de comando (opção-s
).Para obter os maiores itens (arquivos e pastas), classificados, com tamanhos legíveis por humanos no Linux:
Isso o enterrará em vários arquivos pequenos. Você pode se livrar deles com
--threshold
(1 MB no meu exemplo):A vantagem deste comando é que ele inclui pastas de ponto ocultas (pastas que começam com
.
).Se você realmente deseja apenas as pastas, precisa usá-las,
find
mas isso pode ser muito, muito lento, poisdu
será necessário digitalizar várias pastas várias vezes:fonte
Esteja ciente de que você não pode comparar diretórios com
du
sistemas / máquinas diferentes sem ter certeza, ambos compartilham o mesmo tamanho de bloco do sistema de arquivos. Isso pode contar se você sincronizar novamente alguns arquivos de uma máquina linux para um nas e desejar comparar o diretório sincronizado por conta própria. Você pode obter resultados diferentesdu
devido a diferentes tamanhos de bloco ....fonte
Você também pode querer verificar xdiskusage . Irá fornecer a mesma informação, mas mostrada graficamente, além de permitir a pesquisa detalhada (muito útil). Existem outros utilitários semelhantes para o KDE e até o Windows.
fonte
Você pode usar
ls
em conjunto comawk
:A saída de
ls
é canalizada paraawk
.awk
começa a processar os dados. Delimitador padrão é espaço. A variável sumtot
é inicializada como zero; a seguinte instrução é executada para cada linha / linha emitida porls
. Apenas incrementatot
com o tamanho.$5
significa quinta coluna (produzido porls
). No final, dividimos por (1024 * 1024) para somar em megabytes.Se você converter isso em um script ou função (.bashrc), também poderá usá-lo para obter o tamanho de certos subconjuntos de diretórios, de acordo com os tipos de arquivo.
Se você quiser informações gerais do sistema,
kdirstat
pode ser útil!fonte