How to find the largest Files and Directories

Artigo para uso do dia-a-dia, sobre como identificar os maiores arquivos ou diretórios em ambiente Linux/Unix. No momento do desespero, com o ambiente parado com 100% de FS utilizado, pode ajudar.

Files

Exemplo onde entro em um diretório de meu interesse, que será alvo do comando “find .” Após isso, é exibido os 5 maiores arquivos (já ordenados em forma decrescente):

root@solariSWIV:/var# pwd
/var
root@solariSWIV:/var# find . -ls | sort -nrk7 | head -5
151175 36125 -rw-r--r--   1 root     sys      36852732 Aug 20  2018 ./pkg/cache/actions.stripped
148506 22292 -r--r--r--   1 root     bin      22794033 Aug 20  2018 ./db/stackdb/stackdb
13472 19345 -rw-r--r--   1 root     root     19692362 Aug 20  2018 ./pkg/state/known/catalog.summary.C
13462 18321 -rw-r--r--   1 root     root     18657670 Jul 13  2018 ./pkg/publisher/solaris/origins/9b4531c13be9b35055178bc2fbd4b35375eacf45/catalog.summary.C
13474 15116 -rw-r--r--   1 root     root     15412040 Aug 20  2018 ./pkg/state/known/catalog.dependency.C
root@solariSWIV:/var#

Caso queiramos filtrar pela extensão do arquivo:

root@solariSWIV:/var# find . -name "*.stripped" -ls | sort -nrk7 | head
151175 36125 -rw-r--r--   1 root     sys      36852732 Aug 20  2018 ./pkg/cache/actions.stripped
root@solariSWIV:/var#

Directories

O comando abaixo retorna os 5 diretórios que estão consumindo mais espaço a partir do diretório que é disparado:

[oracle@oel8 oracle]$ du -S . | sort -nr | head -5
du: cannot read directory './18.0.0/base/tfa': Permission denied
2926364 ./SINAPSE/dados/SINAPSE/datafile
2524048 ./dados/RMANDB/datafile
2382420 ./18.0.0/product/lib
1834208 ./archives
1248092 ./SINAPSE/archives

Caso não queiramos as mensagens de erro (por exemplo de permissão negada), podemos executar:

[oracle@oel8 oracle]$ du -S . 2>/dev/null | sort -nr | head -5
2926364 ./SINAPSE/dados/SINAPSE/datafile
2524048 ./dados/RMANDB/datafile
2382420 ./18.0.0/product/lib
1834208 ./archives
1248092 ./SINAPSE/archives
[oracle@oel8 oracle]$

Nota 1: A opção “-S” não inclui o tamanho dos subdiretórios. Caso este seja o objetivo, é só omitir.

Nota 2: A opção “-S” não foi reconhecida em meu teste em Oracle Solaris 11:

root@solariSWIV:/var# du -S . | sort -nr | head -5
du: illegal option -- S
usage: du [-dorx] [-a|-s] [-h|-k|-m] [-H|-L] [file...]
root@solariSWIV:/var# du . | sort -nr | head -5
799625  .
710205  ./pkg
310250  ./pkg/cache
275912  ./pkg/publisher
275909  ./pkg/publisher/solaris
root@solariSWIV:/var#

Para termos o mesmo efeito, basta substituis o “-S” por “-o”:

root@solariSWIV:/var# du -o . | sort -nr | head -5
94799   ./pkg/cache
76102   ./pkg/state/known
69955   ./pkg/publisher/solaris/origins/9b4531c13be9b35055178bc2fbd4b35375eacf45
44586   ./db/stackdb
21524   ./cache/fontconfig
root@solariSWIV:/var#

Leave a Comment

Your email address will not be published.