Questão Bash: Exibe o tamanho de cada subdiretório em um formato de lista usando o comando 1 line?


Eu quero obter uma lista dos diretórios e seus tamanhos em um formato de lista, como você obtém quando faz uma ls -l.

A questão é que existe um comando de uma linha que pode fazer isso? Eu vejo outros têm longos comandos apenas para produzir isso. Isso é apenas muito tempo.

Qual comando pode fazer isso ou combinação de comandos que podem ser facilmente digitados? du -h dá, mas exibe todas as sub-pastas que não é o que eu quero. apenas as pastas de diretórios atuais.


83


origem




Respostas:


Você provavelmente quer ver os diretó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

42





Tente isso

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

E se --max-depth=1 é um pouco longo demais para o seu gosto, você também pode tentar usar:

du -h -s *

Isso usa -s (--summarize) e só imprimirá o tamanho da pasta por padrão. Passando todos os elementos no diretório de trabalho atual (*), produz um resultado similar --max-depth=1 seria:

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 é sutil. A primeira abordagem exibirá o tamanho total do diretório de trabalho atual e o tamanho total de todas as pastas contidas nele ... mas somente até uma profundidade de 1.

A última abordagem irá calcular o tamanho total de todos os itens passados individualmente. Assim, inclui o link simbólico lib64 na saída, mas exclui os itens ocultos (cujo nome começa com um ponto). Ele também não possui o tamanho total do diretório de trabalho atual, já que ele não foi passado como argumento.


113



Resposta perfeita. No Mac OSX, o --depth parâmetro não é reconhecido. Usar du -h -d 1 para o mesmo resultado. - Dylan


Imprima os tamanhos de todas as pastas de arquivos e arquivos 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

5



Mas cuidado! Por que você não deve analisar a saída de ls (1) - Kamil Maciorowski


Vale mencionar o Uso de Discos NCurses comando shell.

O Ncdu é um analisador de uso de disco com uma interface ncurses. Isto é   projetado para encontrar porcos espaço em um servidor remoto, onde você não tem um   toda a configuração gráfica disponível, mas é uma ferramenta útil mesmo em   sistemas desktop comuns. Ncdu pretende ser rápido, simples e fácil de usar,   e deve ser capaz de rodar em qualquer ambiente parecido com POSIX   ncurses instalado.


1