Como encontrar pequenas pastas não vazias?

Como encontrar pequenas pastas não vazias?

Gostaria de encontrar (excluir posteriormente) todas as pastas de música que estão quase vazias (o Banshee exclui apenas os arquivos de música, mas não os outros arquivos lá contidos).

Eu tentei com:

find -type d -size -500k \;

Mas também mostra pastas que contêm arquivos maiores.

find -type d -size -500k -exec du {} \;

mostra o tamanho correto.

Como modificar o find cmd para mostrar apenas pastas menores que N?

Responder1

Um comando que eu uso, desde que você não precise canalizá-lo diretamente para outro script, é

você. | classificar -rn

Isso colocaria as pastas menores no final da lista impressa junto com seus tamanhos. Daria um pouco mais de trabalho filtrar os que são maiores.

Responder2

Se você simplesmente deseja excluir pastas que contêm menos de N bytes, o seguinte liner funcionará:

du | awk '$1 <= 500 { print "rm -rf \"" substr($0, length($1)+2) "\""}' | sh

O que isso faz? Consecutivamente:

  • duimprime tamanhos de diretórios junto com seus caminhos
  • $1 <= 500é uma condição que testa se a primeira coluna está abaixo de 500 (se for menor que 500 bytes)
  • printem impressões awkrm -rf "/path/to/small/dir"
  • | shcanaliza-o para sh para que possa ser executado

Você também pode fazer isso usando xargs em vez de canalizá-lo para sh, mas estou acostumado com isso.

informação relacionada