localize e remova arquivos maiores que um tamanho e tipo específicos

4

Desejo limpar meu servidor de arquivos de log e backups grandes.

Eu inventei isso:

find ./ -size +1M | xargs rm

Mas eu não quero incluir mp3 e mp4. Eu só quero fazer isso para log e arquivar arquivos (zip, tar, etc.)

Como será o comando?

    
por Saeid Yazdani 04.06.2016 / 12:32

2 respostas

8
find -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -size +1M -delete
  • a construção \( \) permite agrupar diferentes padrões de nome de arquivo
  • usando a opção -delete , podemos evitar problemas de tubulação e problemas com xargs Consulte isso , e este
  • ./ ou . é opcional ao usar o comando find para o diretório atual


Editar: Como observa Eric Renouf, se sua versão de find não suportar a opção -delete , use a opção -exec

find -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -size +1M -exec rm {} +

onde todos os arquivos filtrados pelo comando find são passados para o comando rm

    
por 04.06.2016 / 13:09
7

Se você quiser excluir arquivos por nome, use esta sintaxe:

find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -delete

ou se o seu find não suportar delete :

find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -exec rm {} \;
    
por 04.06.2016 / 13:19

Tags