du -h --max-depth=1 . | sort -rh mostra um nível da árvore, o maior primeiro. Depois você repete isso dentro da entrada maior até encontrar o culpado. Essa descida — não um comando genial — é a técnica.
1. Um nível, o maior primeiro
$ clai mostra o tamanho das pastas aqui, um nível de profundidade, maior primeiro→ du -h --max-depth=1 . | sort -rh348K .296K ./a52K ./c
sort -rh ordena corretamente tamanhos legíveis por humanos — ele sabe que 2G é maior que 900M, algo que um sort -r comum não sabe.
2. Vá aonde está o tamanho
$ clai agora faça o mesmo dentro da maior pasta→ du -h --max-depth=1 ./a | sort -rh
Duas ou três iterações disso geralmente chegam à resposta. É mais rápido que uma varredura completa da árvore porque você nunca lê os ramos que não importam.
3. Não conte outros sistemas de arquivos
$ clai tamanho total de / mas fique só neste sistema de arquivos→ du -shx /348G /
-x impede que o du desça a outros pontos de montagem. Sem isso, uma varredura de / entra em /mnt, compartilhamentos de rede e bind mounts, e retorna um número que não tem nada a ver com o disco que você está tentando liberar.
4. Os maiores arquivos individuais
$ clai encontre os 10 maiores arquivos em /var→ sudo find /var -xdev -type f -printf '%s\t%p\n' | sort -rn | head -10
Às vezes não é uma pasta, é um único log de 40 GB. -xdev é o equivalente do find ao du -x.
5. Explore de forma interativa
$ clai navegue pelo uso de disco de forma interativa em /var→ ncdu -x /var
O ncdu varre uma vez e deixa você percorrer a árvore com as setas, apagando pelo caminho. Se você vai rodar du mais de duas vezes, instale-o em vez disso.
6. Rode onde ele tem permissão para ler tudo
$ clai varra / por tamanho de pastas sem ruído de permissão→ sudo du -h --max-depth=1 -x / 2>/dev/null | sort -rh | head
Sem sudo, o du pula silenciosamente diretórios que não consegue acessar e subestima o resultado. Com ele, 2>/dev/null esconde o ruído dos arquivos que desaparecem no meio da varredura.
Pegadinhas
dumede blocos alocados, não o conteúdo dos arquivos. Um milhão de arquivos de 1 byte ocupa muito mais que um milhão de bytes.du --apparent-sizemostra o outro número.- Se
duedfdivergem muito, pare. É outro problema — arquivos apagados mas ainda mantidos abertos, ou inodes esgotados. Veja o artigo linkado. --max-depthé exclusivo do GNU. No macOS o equivalente édu -d 1, esort -rhprecisa de um BSD sort recente ou coreutils.
Perguntas relacionadas
Por que o du é tão lento? Ele faz stat em cada arquivo da árvore. Em sistemas de arquivos de rede ou com milhões de arquivos pequenos isso é realmente lento — restrinja o caminho ou use o ncdu, que pelo menos armazena em cache a varredura.
Qual a diferença entre du -s e du -h --max-depth=1? -s imprime um total para o caminho inteiro; --max-depth=1 imprime uma linha por filho. Use -s quando você já souber onde olhar.
Como encontro pastas acima de um certo tamanho? Passe por awk: du -m --max-depth=2 . | awk '$1 > 1000' lista tudo acima de 1 GB.
Veja também
- Pare de decorar flags do find: peça o que você quer
- df diz que o disco está cheio, du diz que não está
- O Docker comeu seu disco: como recuperar o espaço
Peça os tamanhos de pasta que você quer, e o CliAI escreve o du, o sort -rh e o -x. Instale em uma linha.