it-swarm-pt.tech

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

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.

131
Robert Munteanu

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 ao invés 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
130
Sean

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

199
Daenyth

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.

(-n parâmetro para classificar é necessário para que o primeiro campo seja classificado como um número em vez de 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 incluir na lista a data e a hora em que qualquer arquivo do diretório foi alterado pela última vez.

37
mas

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

Filelight screenshot

23
Anton Geraschenko

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:

enter image description here

20
Nicolas Raoul

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.

enter image description here

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.

8
Jonik

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á para dar o maior no final.
A exibição em árvore, no entanto, precisa de mais alguns ... isso é realmente necessário?

Observe que essa varredura está aninhada nos diretórios, de modo que contará novamente os subdiretórios para os diretórios superiores e o diretório base . será exibido 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ê quer. O controle de profundidade de find com -maxdepth e -mindepth pode restringir a uma profundidade específica de subdiretório.


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

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

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 melhores resultados.

alt text

3
Dennis Williamson

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

du -h /path/to/dir/

Executando isso 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
[...]

Então você pode classificar a saída passando para sort

du /path/to/dir | sort -n
2
Josh Hunt

Embora encontrar o percentual de uso de disco de cada arquivo/diretório seja benéfico, na maioria das vezes 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
1
trante

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

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

A seguir, 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% ***

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

1
Kam

Outra alternativa é agedu que divide o espaço em disco pelo tempo de acesso anterior, o que facilita a localização de arquivos perdidos no espaço.

Ele ainda funciona em um servidor sem o X Windows, servindo páginas 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

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

1
Bastiaan

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, com base no tamanho dos arquivos, através do comando "sort -nr -k5" piped.

1
xpros
du -chs /*

Irá mostrar-lhe uma lista do diretório raiz.

0
RusAlex

Tente 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 para humanos:

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

O segundo comando para trabalhar no OSX/BSD corretamente (como sort não possui -h), você precisa instalar sort de coreutils.

Então, esses aliases são úteis em seus arquivos rc (toda vez 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'
0
kenorb

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

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

$ xdiskusage /usr

enter image description here

0
mpy