2009-07-21 06:54:48 +0000 2009-07-21 06:54:48 +0000
134
134

Utilitário Linux para encontrar os maiores ficheiros/directórios

Estou à procura de um programa para me mostrar quais os ficheiros/directórios que ocupam mais espaço, algo do género:

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

Eu sei que é possível no KDE3, mas prefiro não o fazer - KDE4 ou linha de comando são preferíveis.

Respostas (16)

200
200
200
2010-07-07 15:31:29 +0000

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

131
131
131
2012-03-06 19:56:10 +0000

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

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

Para encontrar os 10 maiores directó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 ficheiros com espaços nos nomes, e produz tamanhos de ficheiros legíveis por humanos na saída. O maior ficheiro listado por último. O argumento a seguir é o número de resultados que se vê (aqui os 10 maiores).

Há duas técnicas utilizadas para manusear espaços nos nomes dos ficheiros. A find -print0 | xargs -0 utiliza delimitadores nulos em vez de espaços, e a segunda xargs -I{} utiliza novas linhas em vez de espaços para terminar os 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
37
37
37
2009-07-21 07:19:02 +0000

Para uma vista rápida:

du | sort -n

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

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

ou, mais uma vez, evitando o redundante * :

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

lista todos os directórios do directório actual com o último maior.

(parâmetro -n para ordenar é necessário para que o primeiro campo seja ordenado como um número e não como texto, mas isto impede a utilização do parâmetro -h para du, pois precisamos de um número significativo para a ordenação)

Outros parâmetros para du estão disponíveis se quiser seguir ligações simbólicas (por defeito não é para seguir ligações simbólicas) ou apenas mostrar o tamanho do conteúdo do directório excluindo subdirectórios, por exemplo. du pode mesmo incluir na lista a data e a hora em que qualquer ficheiro no directório foi alterado pela última vez.

23
23
23
2009-07-24 04:26:50 +0000

Para a maioria das coisas, prefiro as ferramentas CLI, mas para a utilização da drive, gosto muito de filelight . A apresentação é mais intuitiva para mim do que qualquer outra ferramenta de gestão do espaço que já vi.

20
20
20
2013-02-18 04:35:03 +0000

Filelight é melhor para os utilizadores do KDE, mas para a integralidade (o título da pergunta é geral) devo mencionar Baobab está incluído no Ubuntu, também conhecido por Analisador de Utilização de Disco:

8
8
8
2009-07-22 10:00:12 +0000

Uma ferramenta GUI, * KDirStat **, mostra os dados tanto em forma de tabela como graficamente. É possível ver muito rapidamente onde a maior parte do espaço é utilizada.

Não tenho a certeza se esta é exactamente a ferramenta KDE que não queria, mas penso que ainda assim deve ser mencionada numa pergunta como esta. É bom e muitas pessoas provavelmente não o sabem - eu próprio só soube disso recentemente.

5
5
5
2009-07-21 07:06:07 +0000

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

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

Mostrará tamanhos de directórios em KB e ordenará os maiores no final.
A visualização de árvores precisará contudo de mais fu… é realmente necessária?

Note que este scan está aninhado entre directórios, pelo que contará novamente subdirectórios para os directórios superiores e o directório base . aparecerá no final como a soma total de utilização.

No entanto, é possível utilizar um controlo de profundidade no achado para pesquisar a uma profundidade específica.
E, envolva-se muito mais com a sua pesquisa de facto… dependendo do que quiser. O controlo de profundidade de find com -maxdepth e -mindepth pode restringir-se a uma profundidade subdireccional específica.


Aqui está uma variação refinada para o seu problema arg-too-longo

find . -type d -exec du -sk {} \; | sort -n -k 1
3
3
3
2009-07-21 11:35:45 +0000

Eu gosto de gt5 . É possível navegar na árvore e abrir subdirectórios para perfurar para mais detalhes. Utiliza um web browser de modo texto, como o lince, para mostrar os resultados. Instale elinks para obter os melhores resultados.

2
2
2
2009-07-21 07:00:04 +0000

Embora não lhe dê uma saída aninhada como essa, tente du

du -h /path/to/dir/

Executando que na minha pasta Documentos cospe 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 pode ordenar a saída, passando-a para sort

du /path/to/dir | sort -n
1
1
1
2013-05-15 21:52:25 +0000

Embora encontrar a percentagem de utilização do disco de cada ficheiro/directório seja benéfico, na maioria das vezes conhecer os maiores ficheiros/directórios dentro do disco é suficiente.

Portanto, 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
1
1
1
2012-09-06 05:27:20 +0000

Aqui está o guião que o faz por si automaticamente. http://www.thegeekscope.com/linux-script-to-find-largest-files/

O seguimento é a saída de amostra 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%***

Pode achar este script muito útil e útil !

1
1
1
2014-05-29 03:39:47 +0000

Para encontrar os 25 ficheiros principais no directório actual e nos seus subdirectórios:

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

A saída dos 25 ficheiros do topo de gama será feita através da ordenação com base no tamanho dos ficheiros através do comando “sort -nr -k5” canalizado.

1
1
1
2015-04-10 12:07:49 +0000

Outra alternativa é agedu que decompõe o espaço em disco por tempo de último acesso, o que facilita a localização de ficheiros que desperdiçam espaço.

Até funciona num servidor sem X Windows, servindo páginas web temporárias para que a utilização possa ser analisada remotamente, com gráficos. Assumindo que o endereço IP do servidor é 192.168.1.101, pode escrever isto na linha de comando do servidor

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

Isto imprime o nome de utilizador, palavra-passe e URL com o qual pode aceder à “GUI” e navegar pelos resultados. Quando terminado, termina agedu com Ctrl+D no servidor.

0
0
0
2010-07-07 11:05:40 +0000
du -chs /*

Mostrar-lhe-á uma lista do directório raiz.

0
0
0
2013-08-18 12:36:57 +0000

Para completar a lista um pouco mais, adiciono o meu analisador de utilização de disco favorito, que é xdiskusage .

O GUI lembra-me de alguns outros bons utilitários do ‘ol’ X, é rápido e não inchado, mas é possível navegar facilmente na hierarquia e ter algumas opções de visualização:

$ xdiskusage /usr

0
0
0
2015-03-05 13:44:05 +0000

Experimente os seguintes ficheiros de uma linha (mostra os 20 maiores ficheiros do directório actual):

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

ou com tamanhos legíveis para humanos:

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

O segundo comando para trabalhar correctamente em OSX/BSD (como sort não tem -h), é necessário instalar sort a partir de coreutils.

Assim, estes pseudónimos são úteis para ter nos seus ficheiros rc (sempre que precisar):

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