Diretórios que excedem certo tamanho?

3

Eu interpretei mal pergunta e pensei que estava pedindo algo que eu precisava por um longo tempo. Minha pergunta é um pouco diferente: como encontrar diretórios cujo conteúdo excede um certo tamanho. Existe alguma maneira * nix de fazer isso?

    
por Dan Rosenstark 26.02.2010 / 14:14

3 respostas

6

find não analisa o tamanho cumulativo dos subdiretórios. Em vez disso, use du com a opção -s para informar que imprima apenas o tamanho total de cada diretório fornecido na linha de comando:

du -s *|awk '{ if ($1 > 3000) print }'

lhe dará saída como:

3124    foo
10025   bar

ou, para imprimir apenas os nomes:

du -s *|awk '{ if ($1 > 3000) print $2 }'
    
por 26.02.2010 / 15:22
1

O find . -type d -size +3k -print faz o que você está pedindo? Mude o "3k" para o tamanho que quiser, claro.

    
por 26.02.2010 / 14:54
1

Algumas expansões na resposta de Peter Westlake:

  • A opção --max-depth pode ser usada para limitar a profundidade dos subdiretórios a serem pesquisados. No exemplo abaixo, a pesquisa é de dois níveis.

  • Você pode usar a opção -B para du para definir um tamanho de bloco para a saída du. No exemplo a seguir, o tamanho do diretório é kilobytes (1000 bytes aqui). Por enquanto, você pode usar as opções -k (kilobytes) e -m (megabytes), mas o man me diz que elas estão obsoletas, então eu recomendo que você as evite. (Caso contrário, você estará na situação em que posso acabar - no hábito de usá-los e frustrado quando eles vão embora!)

    $ du --max-depth = 2 -B 1000 | awk '{if ($ 1 > = 5) imprimir $ 0};'

Mais um ponto: Se você deseja que a saída seja classificada por tamanho de diretório, canalize-a por meio de sort -n, que ordenará a saída numericamente (o -n) e usará a primeira coluna (o tamanho do diretório).

    
por 26.02.2010 / 16:41