Encontre os maiores diretórios / arquivos recursivamente [duplicados]

16

Estou procurando um script / programa que exiba os principais x maiores diretórios / arquivos e depois entre nessas pastas e exiba os x maiores diretórios / arquivos para uma profundidade configurável.

231MB bin
 - 220MB ls
  - 190MB dir
  - 15MB def
  - 3MB lpr
 - 10MB asd
 - 1MB link

Como posso fazer isso?

    
por Robert Munteanu 12.06.2009 / 23:27

8 respostas

21

Você pode ver os 10 maiores diretórios com:

du -cks *|sort -rn|head

Isso adicionará recursivamente os tamanhos de tudo em cada diretório - mas você teria que executá-lo manualmente em cada nível para obter uma análise do que está em cada

    
por 12.06.2009 / 23:30
9

É provável que seu sistema tenha um desses instalados ou esteja disponível por meio do gerenciador de pacotes:

Gráfica:

Baseado em texto:

  • ncdu - ncurses
  • gt5 - navegador de texto (lynx, w3m, etc. - selecionado automaticamente) - Na verdade, é um script de shell!

Eles podem não funcionar exatamente como você especificou, mas devem fazer a maior parte do que você precisa.

    
por 14.06.2009 / 18:29
7

Minha variação na resposta de Brent é:

# du -a | sort -rn | head

O que lhe dará os maiores diretórios ou arquivos na árvore.

    
por 12.06.2009 / 23:59
3

Você pode fazer algo similar usando find:

# find -maxdepth 2 -type d -exec du -sh {} \;

Mas isso não será classificado por tamanho e será incrivelmente lento e ineficiente. Melhor escrever um script que analise du -a.

    
por 13.06.2009 / 01:55
2

(Queria adicionar isso como um comentário à resposta de Brent, mas não vejo um link para fazer isso) Recentemente, tive um problema semelhante, e se você precisar apenas verificar uma partição em questão, adicionar um -x à resposta de Brent é bastante útil, especialmente se alguns diretórios tiverem sua própria partição.

Então seria:

du -ckx / | sort -rn | head 
    
por 08.06.2010 / 19:01
1

Something to remember about human-readable output is that a reverse numeric sort won't work as expected without fixing it up. A quicker option is to use the -k switch to output the directory size information in kilobytes.

Eu teria uma breve olhada na manpage de ordenação - em alguns sistemas você pode usar sort -h para classificar a saída legível. Eu usei isso no CentOS 6.2 com o tipo 8.4. Caso contrário, você pode redirecionar a saída de du -h para um arquivo e classificar com algo como:

for i in K M G; do egrep "^[0-9,\.]+${i}" somefile | sort -n; done
    
por 13.06.2009 / 02:58
1

Isso faz com que você tenha o tamanho classificado e legível por humanos dos 10 maiores arquivos / pastas na árvore de diretórios inteira:

du -ah | sort -hr | head

Exemplo

1019M   .
431M    ./prod
195M    ./prod/mainprogram
180M    ./utils
162M    ./prod/subprogram1
157M    ./.git
156M    ./py
155M    ./.git/objects
148M    ./.git/objects/pack
128M    ./prod/mainprogram/hdf
    
por 08.09.2014 / 20:07
0

Eu não sei de uma ferramenta de linha de comando que faz isso (diferente do que as outras respostas sugeriram), mas se você é capaz de executar programas GUI nesta máquina, tente KDirStat . Ele mostra o uso do disco de todos os arquivos e diretórios sob uma raiz específica, classificados por tamanho (por padrão).

    
por 13.06.2009 / 02:27