Como encontrar pequenas pastas não vazias?

2

Eu gostaria de encontrar (depois excluir) 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 existentes).

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 cmd de localização para mostrar somente pastas menores que N?

    
por Paradiesstaub 08.11.2011 / 02:26

2 respostas

3

Um comando que eu uso, contanto que você não precise canalizar isso direto para outro script, é

du. | sort -rn

Isso colocaria as pastas menores na parte inferior da lista impressa junto com seus tamanhos. Levaria um pouco mais de trabalho para filtrar os que são maiores.

    
por ekthomson 08.11.2011 / 02:34
1

Se você quiser simplesmente excluir pastas que contenham N bytes, o seguinte liner funcionará:

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

O que isso faz? Consecutivamente:

  • du imprime 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)
  • print no awk imprime rm -rf "/path/to/small/dir"
  • | sh canaliza para sh para poder ser executado

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

    
por Llamageddon 24.11.2011 / 18:43