Localizando arquivos que usam mais espaço em disco

43

É possível listar os maiores arquivos no meu disco rígido? Eu freqüentemente uso df -Hpara exibir o uso do meu disco, mas isso fornece apenas a porcentagem cheia, GBs restantes etc.

Eu faço muitos cálculos com muitos dados, com um grande número de arquivos pequenos e um número muito pequeno de arquivos muito grandes. Como a maior parte do espaço em disco usado está em um número muito pequeno de arquivos, pode ser difícil rastrear onde estão esses arquivos grandes. A exclusão de um arquivo de 1 kB não libera muito espaço, mas a exclusão de um arquivo de 100 GB. Existe alguma maneira de classificar os arquivos no disco rígido em termos de tamanho?

Obrigado.

Andrew
fonte
Para 'tdu', consulte também: unix.stackexchange.com/questions/425615/…
Joseph Paul

Respostas:

47

Com as ferramentas disponíveis padrão:

Para listar os 10 maiores arquivos do diretório atual: du . | sort -nr | head -n10

Para listar os maiores diretórios do diretório atual: du -s * | sort -nr | head -n10

ATUALIZAÇÃO Hoje em dia, eu costumo usar um formulário mais legível (como Jay Chakra explica em outra resposta e deixar de fora | head -n10, basta deixá-lo rolar para fora da tela. A última linha tem o maior arquivo ou diretório (árvore).

Às vezes, por exemplo. quando você tem muitos pontos de montagem no diretório atual, em vez de usar -xou múltiplos --exclude=PATTERN, é mais fácil montar o sistema de arquivos em um ponto de montagem não utilizado ( geralmente /mnt ) e trabalhar a partir daí.

Lembre-se de que, ao trabalhar com grandes volumes (NFS), você pode causar uma carga substancial no arquivador (backend de armazenamento) ao executar dusobre muitos (sub) diretórios. Nesse caso, é melhor considerar a configuração quotado volume.

jippie
fonte
3
Para sua primeira opção, você não pode apenas listá-las ls -Sl | head?
24512 Bernhard
Não, dupercorre toda a árvore de diretórios, enquanto ls -S verifica apenas o diretório atual.
jippie
35

Adicionando à resposta de jippie

Para listar os maiores diretórios do diretório atual no formato legível por humanos:

du -sh * | sort -hr | head -n10

Amostra:

[~]$ du -sh * | sort -hr | head -n10
48M app
11M lib
6.7M    Vendor
1.1M    composer.phar
488K    phpcs.phar
488K    phpcbf.phar
72K doc
16K nbproject
8.0K    composer.lock
4.0K    README.md

Torna mais conveniente a leitura :)

Jay Chakra
fonte
14

Tente ncdu, pois ele pode fornecer uma visão geral do uso do disco. No site:

Um analisador de uso de disco com uma interface ncurses, destinado a ser executado em um servidor remoto, onde você não tem uma configuração totalmente lógica, mas tem a ver com uma conexão SSH simples. O ncdu pretende ser rápido, simples e fácil de usar, e deve poder rodar em qualquer ambiente mínimo do tipo POSIX com o ncurses instalado.

Renan
fonte
3

(gnu)

du -max /dir | sort -nIrá exibir arquivos grandes, bem como grandes diretórios, pode ser usado para identificar onde você precisa fazer alguma limpeza.

du -max | sort -n | tail -1000
...
46632   ./i386/update/SuSE-SLES/8/rpm/i586/kernel-source-2.4.21-138.i586.rpm
49816   ./UnitedLinux/apt/i386/RPMS.updates/k_debug-2.4.21-138.i586.rpm
679220  ./UnitedLinux/apt/i386/RPMS.updates
679248  ./UnitedLinux/apt/i386
679252  ./UnitedLinux/apt
691820  ./UnitedLinux/i586
691836  ./i386/update/SuSE-SLES/8/rpm/i586
695192  ./i386/update/SuSE-SLES/8/rpm
695788  ./i386/update/SuSE-SLES/8
695792  ./i386/update/SuSE-SLES
695804  ./i386/update
695808  ./i386
1390184 ./UnitedLinux

(Eu sei que é uma árvore bastante antiga: p)

Emmanuel
fonte
2

Existe uma maneira simples e eficaz de encontrar o tamanho de cada arquivo e diretório no Ubuntu:

Aplicativos> Acessórios> Disk Usage Analyzer

nessa janela, clique no botão "Digitalizar sistema de arquivos" na barra de ferramentas. depois de um curto período de tempo (segundos), você terá o uso do disco de todos os diretórios e arquivos.

Sam
fonte
0

Você pode tentar com este comando, ele listará todos os arquivos maiores que 20Mb.

find / -type f -size +20000k -exec ls -lh {} \; 2> /dev/null \
  | awk '{ print $NF ": " $5 }'  | sort -hrk 2,2
patseb
fonte
3
Se o maior arquivo do seu sistema de arquivos tiver 20 MB, você provavelmente não estará com pouco espaço em disco. Pelo menos com qualquer HD fez esta millenium
Kevin
Esse é apenas um exemplo, você coloca lá o que quiser. Ele encontrará tudo maior que 20 MB, não apenas arquivos de 20 MB.
patseb
ls -lhentão sort?? ls -sou stat -c %bprovavelmente são melhores.
24512 Mikel
Eu não entendo. Meu exemplo usa ls e sort. Ele queria encontrar arquivos em todo o disco, não no diretório.
patseb
0

digite o seguinte comando

cd /

então digite

du -sh * | grep G

O comando acima mostra quanta memória é usada por qual diretório. depois disso, você deve decidir qual diretório ou arquivo deseja excluir

Dipak bodare
fonte
-2

Você pode tentar com este comando, ele listará o arquivo grande:

ls -lrS | tail -1
thiva
fonte
mostra o diretório atual, não o disco rígido inteiro.
slm