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


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.


128


origem


para usuários de mac, eu só quero recomendar este software gratuito chamado Disk Inventory X. baixe aqui derlien.com é simples de usar para mac osx - Adam Delarosa


Respostas:


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

129





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


185



Sim e é pequeno! - Luke Stanley
Eu amo ncdu. É um dos meus favoritos do Google. - Rob
Uau. Como eu não sabia que isso existia? Obrigado! - pixel
+1000 para ncdu --- é como htop para espaço em disco. Super útil! - Noah Sussman
já que parece não haver sinalizadores nem uma opção .config, aqui está a sequência de teclas que você provavelmente irá digitar toda vez que executá-la, se quiser ver arquivos e pastas misturados e estatísticas de porcentagem relativa: [t] [g] [g]. - rymo


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 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 incluir na lista a data e a hora em que qualquer arquivo no diretório foi alterado pela última vez.


37



É o * realmente necessário. Por padrão, não inclui todos os arquivos no diretório atual? - Josh Hunt
Não, o * deve ser redundante. Não tenho certeza se usá-lo é o sinal de um bom hábito ou um mau. Obrigado por apontar isso. Eu alterei a resposta para refletir isso como opcional. - mas
Isso é bom, mas os resultados não são muito amigáveis. Eu geralmente recorro a isso: find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }' - deed02392
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 organizado - Stuart Cardall


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 eu já vi.

Filelight screenshot


23



O Filelight é a minha ferramenta de eleição para a remoção de suínos espaciais. - Ryan Thompson
Muito bom app. +1 - rpax
Visualmente, é artisticamente intrigante, mas intuitivo? Só de olhar, não faço ideia do que está representando. Alguém pode explicar isso? Fui ao site e não vi nenhuma explicação. - G-Man
Uma ferramenta semelhante no Mac é o DaisyDisk, disponível em daisydiskapp.com - computingfreak


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

enter image description here


20



Se você está procurando por um equivalente a isso na plataforma Mac, marque DaisyDisk. - computingfreak


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.

enter image description here

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


7



Obrigado pela resposta. É o exato mesma ferramenta que eu tinha no KDE3, mas mudei para o KDE 4. - Robert Munteanu
Tem a certeza que não pode obter o kdirstat para o KDE4? - Jonik
Kdirstat é muuuito lento. Usar ncdu em vez de. - Daenyth
Acabei de pressionar ctrl + f para encontrar o ncdu, e vi que eu já defendi o @Daenyth - Rob
No KDE, é simplesmente chamado k4dirstat. - phihag


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 visualização em árvore, no entanto, precisa de mais algum fu ... é realmente necessário?

Observe que esta varredura é aninhada entre os diretórios, de modo que contará os subdiretórios novamente para os diretórios superiores e o diretório base . vai 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. Controle de profundidade de findcom -maxdepth e -mindepth pode restringir a uma profundidade de subdiretório específica.


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

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

5



Eu tentei isso e eu tenho um monte de 'du: Tarefa: Nenhum desses arquivos ou diretório' - Josh Hunt
Obrigado pela resposta. Infelizmente eu recebo bash: / usr / bin / du: Lista de argumentos muito longa - Robert Munteanu


Eu gosto 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. Instalar elinks para melhores resultados.

alt text


3





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 canalizando-a para sort

du /path/to/dir | sort -n

2



Obrigado, mas não mostra corretamente quais diretórios são maiores. Se eu iniciá-lo no meu diretório home, a saída ficará inutilizável. - Robert Munteanu


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



Embora o site vinculado forneça instruções, é preferível que você parafrase e faça referência ao site externo (que, de qualquer forma, parece um blog pessoal). Isso impedirá a perda de link e ajudará mais pessoas nesse site - Canadian Luke
Link está quebrado? - Danijel


Embora a porcentagem de uso de cada arquivo / diretório seja benéfica, a maior parte do tempo, saber 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