2013-02-19 15:34:27 +0000 2013-02-19 15:34:27 +0000
104
104

Mostrar cada tamanho de subdirectório num formato de lista usando um comando de linha em Bash?

Quero obter uma lista dos directórios e dos seus tamanhos num formato de lista como o que se obtém quando se faz um ls -l.

O problema é que existe um comando de uma linha que pode fazer isto? Vejo que outros têm comandos longos apenas para produzir isto. Isso é demasiado longo.

Que comando pode fazer isto ou combinação de comandos que podem ser facilmente digitados? du -h dá-o, mas mostra todas as subpastas que não é o que eu quero. apenas as pastas dos directórios actuais.

Respostas (4)

126
126
126
2013-02-19 15:36:20 +0000

Experimente este

du -h --max-depth=1

Saída

oliver@home:/usr$ sudo du -h --max-depth=1
24M ./include
20M ./sbin
228M ./local
4.0K ./src
520M ./lib
8.0K ./games
1.3G ./share
255M ./bin
2.4G .

Alternativa

Se --max-depth=1 for um pouco longo demais para o seu gosto, também pode tentar usar:

du -h -s *

Isto usa -s (--summarize) e só imprimirá o tamanho da própria pasta por defeito. Ao passar todos os elementos do directório de trabalho actual (*), produz uma produção semelhante à --max-depth=1:

Saída

oliver@cloud:/usr$ sudo du -h -s *
255M bin
8.0K games
24M include
520M lib
0 lib64
228M local
20M sbin
1.3G share
4.0K src

A diferença é subtil. A primeira abordagem mostrará o tamanho total do directório de trabalho actual e o tamanho total de todas as pastas que nele estão contidas… mas apenas até uma profundidade de 1.

A segunda abordagem calculará o tamanho total de todos os itens passados individualmente. Assim, inclui o symlink lib64 na saída, mas exclui os itens escondidos (cujo nome começa com um ponto). Também lhe falta o tamanho total para o directório de trabalho actual, uma vez que isso não foi passado como argumento.

79
79
79
2016-06-17 23:04:29 +0000

Provavelmente quer ver os directórios ordenados por tamanho:

$ du -hs * | sort -hr

856M lib
746M share
612M lib64
312M src
267M java
239M bin
179M sbin
173M local
93M i686-w64-mingw32
72M libexec
26M include
20M puppet
772K X11R6
20K man
4.0K games
4.0K etc
0 tmp
6
6
6
2014-11-06 14:52:37 +0000

Imprimir os tamanhos de todas as pastas de ficheiros e ficheiros ocultos no disco:

el@dev /home/el $ du -sh `ls -a`
258M .
265M ..
4.0K .classpath
258M .git
4.0K .gitignore
9.0K nbactions.xml
12K README
20K .README.swp
4.0K run.sh
23K XmlPostPropagate.php
3
3
3
2016-06-12 12:29:56 +0000

Vale a pena mencionar o comando NCurses Disk Usage shell.

Ncdu é um analisador de utilização de disco com interface ncurses. Foi concebido para encontrar porcos espaciais num servidor remoto onde não se dispõe de uma configuração gráfica completa, mas é uma ferramenta útil mesmo em sistemas desktop normais. O Ncdu pretende ser rápido, simples e fácil de usar, e deve ser capaz de funcionar em qualquer ambiente tipo POSIX mínimo com ncurses instaladas.