Utilitário Linux para encontrar os maiores arquivos / diretórios [fechados]

130

Estou procurando um programa para me mostrar quais arquivos / diretórios ocupam mais espaço, algo como:

74% music
 \- 60% music1
 \- 14% music2
12% code
13% other

Eu sei que é possível no KDE3, mas eu prefiro não fazer isso - o KDE4 ou a linha de comando são os preferidos.

    
por Robert Munteanu 21.07.2009 / 08:54

17 respostas

130

Para encontrar os 10 maiores arquivos (linux / bash):

find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

Para encontrar os 10 maiores diretórios:

find . -type d -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

A única diferença é -type {d:f} .

Manipula arquivos com espaços nos nomes e produz tamanhos de arquivos legíveis por humanos na saída. Maior arquivo listado por último. O argumento a seguir é o número de resultados que você vê (aqui os 10 maiores).

Existem duas técnicas usadas para manipular espaços em nomes de arquivos. O find -print0 | xargs -0 usa delimitadores nulos em vez de espaços e o segundo xargs -I{} usa novas linhas em vez de espaços para finalizar itens de entrada.

exemplo:

$ find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

  76M    ./snapshots/projects/weekly.1/onthisday/onthisday.tar.gz
  76M    ./snapshots/projects/weekly.2/onthisday/onthisday.tar.gz
  76M    ./snapshots/projects/weekly.3/onthisday/onthisday.tar.gz
  76M    ./tmp/projects/onthisday/onthisday.tar.gz
  114M   ./Dropbox/snapshots/weekly.tgz
  114M   ./Dropbox/snapshots/daily.tgz
  114M   ./Dropbox/snapshots/monthly.tgz
  117M   ./Calibre Library/Robert Martin/cc.mobi
  159M   ./.local/share/Trash/files/funky chicken.mpg
  346M   ./Downloads/The Walking Dead S02E02 ... (dutch subs nl).avi
    
por 06.03.2012 / 20:56
189

Eu sempre uso ncdu . É interativo e muito rápido.

    
por 07.07.2010 / 17:31
37

Para uma visão rápida:

du | sort -n

lista todos os diretórios com o maior último.

du --max-depth=1 * | sort -n

ou, novamente, evitando o redundante *:

du --max-depth=1 | sort -n

lista todos os diretórios no diretório atual com o maior último.

(- o parâmetro n para classificar é necessário para que o primeiro campo seja classificado como um número em vez de como texto, mas isso impede o uso do parâmetro -h para du, pois precisamos de um número significativo para o tipo)

Outros parâmetros para du estão disponíveis se você quiser seguir links simbólicos (o padrão é não seguir links simbólicos) ou apenas mostrar o tamanho do conteúdo do diretório excluindo subdiretórios, por exemplo. du pode até incluir na lista a data e a hora em que qualquer arquivo no diretório foi alterado pela última vez.

    
por 21.07.2009 / 09:19
23

Para a maioria das coisas, eu prefiro ferramentas CLI, mas para uso de drive, eu realmente gosto filelight . A apresentação é mais intuitiva para mim do que qualquer outra ferramenta de gerenciamento de espaço que vi.

    
por 24.07.2009 / 06:26
20

O Filelight é melhor para os usuários do KDE, mas para ser completo (o título da questão é geral), devo mencionar que o Baobab está incluído no Ubuntu, também conhecido como Disk Usage Analyzer:

    
por 18.02.2013 / 05:35
8

Uma ferramenta GUI, KDirStat , mostra os dados em forma de tabela e graficamente. Você pode ver muito rapidamente onde a maior parte do espaço é usada.

Não tenho certeza se essa é exatamente a ferramenta do KDE que você não queria, mas acho que ela ainda deve ser mencionada em uma pergunta como essa. É bom e muitas pessoas provavelmente não sabem disso - eu só aprendi sobre isso recentemente.

    
por 22.07.2009 / 12:00
5

Uma combinação é sempre o melhor truque no Unix.

du -sk $(find . -type d) | sort -n -k 1

Mostrará os tamanhos de diretório em KB e classificará o maior no final.
A visualização em árvore, no entanto, precisa de um pouco mais ... é realmente necessário?

Observe que essa varredura está aninhada nos diretórios, de modo que contará os subdiretórios novamente para os diretórios superiores e o diretório base . aparecerá no final como a soma total de utilização.

No entanto, você pode usar um controle de profundidade na pesquisa para pesquisar em uma profundidade específica.
E envolva-se muito mais com a sua digitalização ... dependendo do que você deseja. O controle de profundidade de find com -maxdepth e -mindepth pode restringir a uma profundidade de subdiretório específica.

Aqui está uma variação refinada para o seu problema de muito longo argumento

find . -type d -exec du -sk {} \; |  sort -n -k 1
    
por 21.07.2009 / 09:06
3

Eu gosto de gt5 . Você pode navegar na árvore e abrir subdiretórios para detalhar mais detalhes. Ele usa um navegador da Web em modo de texto, como o lynx, para exibir os resultados. Instale elinks para obter melhores resultados.

    
por 21.07.2009 / 13:35
2

Embora não forneça uma saída aninhada como essa, tente du

du -h /path/to/dir/

A execução dessa na minha pasta Documentos mostra o seguinte:

josh-hunts-macbook:Documents joshhunt$ du -h
  0B    ./Adobe Scripts
  0B    ./Colloquy Transcripts
 23M    ./Electronic Arts/The Sims 3/Custom Music
  0B    ./Electronic Arts/The Sims 3/InstalledWorlds
364K    ./Electronic Arts/The Sims 3/Library
 77M    ./Electronic Arts/The Sims 3/Recorded Videos
101M    ./Electronic Arts/The Sims 3/Saves
 40M    ./Electronic Arts/The Sims 3/Screenshots
1.6M    ./Electronic Arts/The Sims 3/Thumbnails
387M    ./Electronic Arts/The Sims 3
387M    ./Electronic Arts
984K    ./English Advanced/Documents
1.8M    ./English Advanced
  0B    ./English Extension/Documents
212K    ./English Extension
100K    ./English Tutoring
5.6M    ./IPT/Multimedia Assessment Task
720K    ./IPT/Transaction Processing Systems
8.6M    ./IPT
1.5M    ./Job
432K    ./Legal Studies/Crime
8.0K    ./Legal Studies/Documents
144K    ./Legal Studies/Family/PDFs
692K    ./Legal Studies/Family
1.1M    ./Legal Studies
380K    ./Maths/Assessment Task 1
388K    ./Maths
[...]

Depois, você pode classificar a saída canalizando-a para sort

du /path/to/dir | sort -n
    
por 21.07.2009 / 09:00
1

Aqui está o script que faz isso para você automaticamente.

link

A seguir, a saída de exemplo do script:

**# sh get_largest_files.sh / 5**

[SIZE (BYTES)]     [% OF DISK] [OWNER]         [LAST MODIFIED ON]        [FILE] 

56421808           0%           root           2012-08-02 14:58:51       /usr/lib/locale/locale-archive
32464076           0%           root           2008-09-18 18:06:28       /usr/lib/libgcj.so.7rh.0.0
29147136           0%           root           2012-08-02 15:17:40       /var/lib/rpm/Packages
20278904           0%           root           2008-12-09 13:57:01       /usr/lib/xulrunner-1.9/libxul.so
16001944           0%           root           2012-08-02 15:02:36       /etc/selinux/targeted/modules/active/base.linked

Total disk size: 23792652288 Bytes
Total size occupied by these files: 154313868 Bytes  [ 0% of Total Disc Space  ]

*** Note: 0% represents less than 1% ***

Você pode achar este script muito útil e útil!

    
por 06.09.2012 / 07:27
1

Embora a porcentagem de uso de cada arquivo / diretório seja benéfica, a maior parte do tempo, conhecer os maiores arquivos / diretórios dentro do disco é suficiente.

Então, meu favorito é este:

# du -a | sort -n -r | head -n 20

E a saída é assim:

28626644        .
28052128        ./www
28044812        ./www/vhosts
28017860        ./www/vhosts/example.com
23317776        ./www/vhosts/example.com/httpdocs
23295012        ./www/vhosts/example.com/httpdocs/myfolder
23271868        ./www/vhosts/example.com/httpdocs/myfolder/temp
11619576        ./www/vhosts/example.com/httpdocs/myfolder/temp/main
11590700        ./www/vhosts/example.com/httpdocs/myfolder/temp/main/user
11564748        ./www/vhosts/example.com/httpdocs/myfolder/temp/others
4699852         ./www/vhosts/example.com/stats
4479728         ./www/vhosts/example.com/stats/logs
4437900         ./www/vhosts/example.com/stats/logs/access_log.processed
401848          ./lib
323432          ./lib/mysql
246828          ./lib/mysql/mydatabase
215680          ./www/vhosts/example.com/stats/webstat
182364          ./www/vhosts/example.com/httpdocs/tmp/aaa.sql
181304          ./www/vhosts/example.com/httpdocs/tmp/bbb.sql
181144          ./www/vhosts/example.com/httpdocs/tmp/ccc.sql
    
por 15.05.2013 / 23:52
1

Para encontrar os 25 principais arquivos no diretório atual e em seus subdiretórios:

find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25

O resultado será a saída dos 25 principais arquivos por classificação com base no tamanho dos arquivos através do comando canalizado "sort -nr -k5".

    
por 29.05.2014 / 05:39
1

Outra alternativa é o agedu que divide o espaço em disco pelo tempo de último acesso, o que torna é mais fácil localizar arquivos que desperdiçam espaço.

Ele até funciona em um servidor sem o X Windows, exibindo páginas da Web temporárias para que o uso possa ser analisado remotamente, com gráficos. Supondo que o endereço IP do servidor é 192.168.1.101, você pode digitar isso na linha de comando do servidor

agedu -s / -w --address 192.168.1.101:60870 --auth basic -R

Imprime o nome de usuário, senha e URL com os quais você pode acessar a "GUI" e navegar pelos resultados. Quando terminar, termine agedu com Ctrl+D no servidor.

    
por 10.04.2015 / 14:07
0
du -chs /*

Irá mostrar uma lista do diretório raiz.

    
por 07.07.2010 / 13:05
0

Para completar a lista um pouco mais, adiciono meu analisador de uso de disco favorito, que é xdiskusage .

A GUI lembra-se de outros utilitários X, é rápido e não inchado, mas você pode navegar facilmente na hierarquia e ter algumas opções de exibição:

$ xdiskusage /usr

    
por 18.08.2013 / 14:36
0

Experimente o seguinte one-liner (exibe os 20 maiores arquivos no diretório atual):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

ou com tamanhos legíveis por humanos:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

The second command to work on OSX/BSD properly (as sort doesn't have -h), you need to install sort from coreutils.

Portanto, esses aliases são úteis em seus arquivos rc (sempre que você precisar):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
    
por 05.03.2015 / 14:44
-1

para listar os maiores arquivos,

find . -type f -exec ls -s {} \; | sort -n -r

refira # 9 aqui: encontre exemplos de comandos

    
por 07.07.2010 / 15:55