Eu preciso de um comando para remover todos os arquivos de um diretório (e subdir) com menos de 20MB

5

Com exceção de certas extensões de arquivo. (removendo lixo que não seja arquivos de legenda de um diretório de vídeo)

    
por dv3500ea 03.11.2010 / 21:57

3 respostas

5

Primeiro, corra

find . -type f ! -name '*.sub' ! -name '*.srt' -size -20M -print  

para verificar se ele contém apenas os tipos de arquivos desejados. Eu sou um usuário unix muito tempo e eu sempre faço isso antes de pedir qualquer comando para remover qualquer coisa (erros sempre acontecem no pior momento possível). Então edite a linha de comando anterior para se tornar

find . -type f ! -name '*.sub' ! -name '*.srt' -size -20M -print0 | xargs -0 /bin/rm -f  

e execute-o. Deve fazer o que quiser. Você pode repetir a parte ! -name '*.srt' mais vezes, se precisar excluir mais arquivos. Tenha cuidado para incluir as aspas simples: elas são importantes para evitar que o shell faça a expansão do nome do arquivo.

    
por Li Lo 03.11.2010 / 22:41
1

aqui:

find . -type f -name *.bak -size -20M -exec rm {} \;

com -name *.bak você está procurando arquivos com extensão "bak", -type f está procurando por arquivos (não diretórios), -size -20M fornece todos os arquivos menores que 20MB ( -size +20M para a pesquisa inversa de arquivos maior que 20MB) e com o -exec você está removendo os resultados dessa pesquisa.

    
por cupakob 03.11.2010 / 22:12
1
find . -type f ! -name '*.ext' -size -20M -delete

é mais fácil de digitar e lembrar do que qualquer outra coisa. Você precisa lembrar que -delete depende da posição e exclui sem aviso prévio e lixeira.

Tenha cuidado, faça backup frequentemente e teste antes de excluir:

find . -type f ! -name '*.ext' -size -20M 
    
por user unknown 20.03.2011 / 00:51