Como mostrar o uso do disco por diretório no meu diretório pessoal usando o Terminal?

0

Alguém poderia me informar qual ferramenta devo usar? Estou tentando executar isso em uma VM do Ubuntu Server. Então acredito que preciso de uma ferramenta como o disco.

    
por mjwittering 01.05.2014 / 12:52

2 respostas

5

Para uso como programa de terminal baseado em tela (curses / ncurses etc) :

Veja ncdu - exemplo de saída:

ncdu 1.10 ~ Use the arrow keys to navigate, press ? for help                    
--- /usr/share/icons -----------------------------------------------------------
  189.2MiB [##########] /oxygen                                                 
  169.3MiB [########  ] /hicolor
  130.2MiB [######    ] /HighContrast
  123.9MiB [######    ] /gnome
   74.0MiB [###       ] /nuvola
   57.9MiB [###       ] /Faience
   46.5MiB [##        ] /Breathe
   46.1MiB [##        ] /Faenza-Blue-Dark2
   43.2MiB [##        ] /AwOken
   40.1MiB [##        ] /elementary-xfce
   31.9MiB [#         ] /AwOkenDark
   26.4MiB [#         ] /elementary
 Total disk usage:   1.7GiB  Apparent size:   1.4GiB  Items: 308833             


Para uso no terminal no modo de texto linha por linha :

Para mostrar tamanhos ordenados de subdiretórios e arquivos no diretório atual:
(Para não mostrar arquivos, veja abaixo)

Execute isso no diretório que contém os diretórios que você deseja medir,
$ HOME no seu exemplo:

du -sch .* * | sort -hr | less

Ou apenas o mesmo comando na forma de opção longa mais detalhada:

du --summarize --total --human-readable .* *  | sort --human-numeric-sort --reverse | less

Isso mostra o

  • du - uso de disco dentro do diretório atual,
  • -s ( --summarize ) - mostrando um valor total por item,
  • -c ( --total ) - e um valor total global como a soma de todos os valores por item,
  • -h ( --human-readable ) - mostrando tamanhos como 6.8G, 4.0K, 5M, etc, em vez de contagens de bytes,
  • .* - listando arquivos e diretórios nomeados com ponto como primeiro caractere,
  • * - e todos os outros arquivos e diretórios,
  • | sort -hr - ordena o resultado, manipulando os tamanhos dos arquivos legíveis por humanos, em ordem inversa,
  • | less - e mostre a lista resultante em um pager, o maior no topo.


Nota: dependendo do shell usado, e suas opções, usando .* em um diretório no qual nenhum nome de arquivo começando com . exista pode causar um erro. Nesse caso, o .* é redundante e pode ser deixado de fora (e é isso que o erro estava tentando dizer a você)


Exemplos de linhas de saída, na ordem de classificação original:

% bl0ck_qu0te%

Para uma resposta exata da pergunta, os arquivos precisam ser excluídos da lista. Isso torna a lista muito mais legível normalmente, então vale a pena fazer; Só não quando digitando manualmente o comando em um shell, como é um pouco longo. Então, para usar em um script, etc:

Use find para listar apenas diretórios (não use a sintaxe comum find . -foo para o argumento de diretório para evitar um prefixo ./ nos nomes de arquivos na lista de resultados):

find .* * -maxdepth 0 -type d -print0 | du --files0-from=- -sch | sort -hr | less


Para uso com a área de trabalho gráfica (não o terminal solicitado) :
(Não foi solicitado, mas adicionando uma pequena dica sobre boas ferramentas de GUI para a tarefa de completenes.)

Veja gdmap e filelight (ou baobab ). Ambos fornecem diagramas muito interessantes e, para obter a melhor visualização intuitiva, vale a pena tentar combinar gdmap com um dos outros dois.

    
por Volker Siegel 01.05.2014 / 14:21
0

Eu uso "du -c | sort -n | tail" para ver quais diretórios ocupam mais espaço. Não é exatamente o mesmo que você está pedindo, mas eu acho muito útil.

    
por sмurf 01.05.2014 / 13:02