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


134

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 prefiro não fazer isso - o KDE4 ou a linha de comando são os preferidos.


para usuários de Mac, eu só quero recomendar este software gratuito chamado Disk Inventory X. baixá-lo aqui derlien.com é simples de usar para Mac OSX
Nimitack

Respostas:


131

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 nos nomes de arquivos. O find -print0 | xargs -0usa 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

Maior arquivo listado primeiro : find . -type f -print0 | xargs -0 du | sort -nr | head -10 | cut -f2 | xargs -I{} du -sh {}(ou seja, use em sort -nr | head -10vez de sort -n | tail -10)
Sandra Rossi

200

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


Sim e é pequeno!
9118 Luke Stanley

5
Eu amo ncdu. É um dos meus achados favoritos do Google.
24412 Rob

5
Uau. como eu não sabia que isso existia. Obrigado!
pixel

22
+1000 para ncdu--- é como htopespaço em disco. Super útil!
Noah Sussman

uma vez que não parece ser bandeiras nem uma opção config, aqui é a sequência de teclas que você provavelmente vai escrever cada vez que você executá-lo se você gosta de ver arquivos e pastas se misturavam e estatísticas percentuais relativos: [t] [g] [g].
RYMO

37

Para uma visão rápida:

du | sort -n

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

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 classificação é necessário para que o primeiro campo seja classificado como um número e não como texto, mas isso impede o uso do parâmetro -h para du, pois precisamos de um número significativo para a classificação)

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


3
O * é realmente necessário. Por padrão, não inclui todos os arquivos no diretório atual?
21139 Josh Hunt

Não, o * deve ser redundante. Não sei se usá-lo é sinal de um bom hábito ou de um mau. Obrigado por apontar isso. Alterei a resposta para refletir como opcional.
Más

Isso é bom, mas os resultados não são muito amigáveis. Eu costumo recorrer a isso:find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
deed02392 6/12/12

romano # du --max-depth = 1 | sort -n du: opção ilegal - - uso: du [-A] [-H | -L -P] [-a | -s | -d profundidade] [-c] [-l] [-h | -k -m -B bsize] [-n] [-x] [-I mask] [arquivo ...]
holms

du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0- um pouco mais arrumado
Stuart Cardall

23

Para a maioria das coisas, prefiro as ferramentas CLI, mas, para o uso da unidade, gosto muito da luz do arquivo . A apresentação é mais intuitiva para mim do que qualquer outra ferramenta de gerenciamento de espaço que eu já vi.

Captura de tela do Filelight


1
Filelight é a minha ferramenta de poda predileta.
21411 Ryan Thompson

Aplicativo muito bom. +1
rpax

Visualmente, é artisticamente intrigante, mas intuitivo? Só de olhar, não tenho ideia do que está representando. Alguém pode explicar isso? Eu fui ao site e não vi nenhuma explicação.
G-Man

Uma ferramenta semelhante no Mac é DaisyDisk, disponível em daisydiskapp.com
computingfreak

20

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

insira a descrição da imagem aqui


Se você está procurando um equivalente a isso na plataforma Mac, confira o DaisyDisk.
computingfreak

8

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

insira a descrição da imagem aqui

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


Obrigado pela resposta. É a exata mesma ferramenta que eu tinha em KDE3, mas me mudei para o KDE 4.
Robert Munteanu

Tem certeza de que não pode obter o kdirstat para o KDE4?
Jonik

4
Kdirstat é muuuuito lento. Use em ncduvez disso.
Daenyth 7/07/10

Eu apenas apertei ctrl + f para encontrar ncdu e vi que eu já havia votado @Daenyth
Rob

No KDE, ele é chamado simplesmente de k4dirstat .
Phihag

5

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

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

Irá mostrar os tamanhos dos diretórios em KB e classificar para fornecer o maior no final.
No entanto, a visualização em árvore precisa de mais fu ... é realmente necessário?

Observe que essa varredura é aninhada entre diretórios, para contar novamente os subdiretórios para os diretórios superiores e o diretório base .será exibido no final como a soma total da utilização.

No entanto, você pode usar um controle de profundidade na localização para pesquisar em uma profundidade específica.
E, na verdade, envolva-se muito mais com a digitalização ... dependendo do que você deseja. O controle de profundidade de findcom -maxdepthe -mindepthpode restringir a uma profundidade específica do subdiretório.


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

find . -type d -exec du -sk {} \; |  sort -n -k 1

Tentei fazer isso e eu tenho muita 'du: Tarefa: Nenhum tal lima ou diretório'
Josh Hunt

Obrigado pela resposta. Infelizmente eu recebo bash: / usr / bin / du: lista de argumentos muito longa
Robert Munteanu

3

Eu gosto de GT5 . Você pode navegar na árvore e abrir subdiretórios para fazer uma busca detalhada para obter 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.

texto alternativo


2

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

du -h /path/to/dir/

A execução 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
[...]

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

du /path/to/dir | sort -n

Obrigado, mas não mostra corretamente quais diretórios são maiores. Se eu iniciar no meu diretório pessoal, a saída será inutilizável.
21711 Robert Munteanu

1

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

http://www.thegeekscope.com/linux-script-to-find-largest-files/

A seguir, é apresentado o exemplo de saída 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 esse script muito útil e útil!


2
Enquanto o site vinculado fornece instruções, é preferível parafrasear e depois referenciar o site externo (que de qualquer maneira parece um blog pessoal). Isso vai evitar apodrecimento do link e ajudar mais pessoas neste site
canadense Luke

1
Link quebrado?
Danijel

1

Embora seja benéfico encontrar a porcentagem de uso de disco de cada arquivo / diretório, na maioria das vezes é suficiente conhecer os maiores arquivos / diretórios dentro do disco.

Então, 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

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

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

Ele produzirá os 25 arquivos principais, classificando com base no tamanho dos arquivos por meio do comando canalizado "sort -nr -k5".


1

Outra alternativa é o agedu, que divide o espaço em disco pela hora do último acesso, o que facilita a localização de arquivos que desperdiçam espaço.

Até funciona em um servidor sem o X Windows, servindo 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 seja 192.168.1.101, você pode digitá-lo na linha de comando do servidor

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

Isso imprime o nome de usuário, senha e URL com os quais você pode acessar a "GUI" e navegar pelos resultados. Quando terminar, termine ageducom Ctrl+Dno servidor.


0
du -chs /*

Irá mostrar uma lista do diretório raiz.


0

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

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

$ xdiskusage /usr

insira a descrição da imagem aqui


0

Experimente o seguinte recurso (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

O segundo comando para funcionar corretamente no OSX / BSD (como sortnão tem -h), você precisa instalar a sortpartir coreutils.

Portanto, é útil ter esses aliases 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'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.