Removendo arquivos linux com exceção

Muitas das vezes precisamos realizar remoção de arquivos em determinados diretório, porém  queremos remover tudo exceto os arquivos com extensão x y ou z.

Geralmente ficamos perdidos ou tentamos fazer scripts mirabolantes para resolver algo que é relativamente simples, com  um simples comando rm, podemos resolver nosso problema. Abaixo irei dar um simples exemplo:

Antes de mais nada precisamos habilitar a função extglob, no qual ira nos permitir utilizar o rm de uma forma “diferenciada”.

  1. Logue no SSH e execute shopt -s extglob
    1
  2. Verifique se a função foi realmente ativada shopt extglob:
    screenshot_1
  3. Apagar todos os arquivos do diretório local EXCETO o arquivo   arquivo1.doc rm -rf !(arquivoarquivo1.doc):
    screenshot_7O caráter de “!” funciona como negação no comando  utilizado, sendo assim ira remover tudo exceto  o que estiver em parenteses. Mais um exemplo, no qual ira informar  que queremos exceção para mais de um arquivo rm -rf !(arquivoarquivo1.doc|arquivoarquivo2.doc):screenshot_6
  4. Você pode definir por extenção ou qualquer trecho, como por exemplo todos os arquivos com prefixo teste, ou um prefixo .zip, .php, .tar.gz, assim como vamos ver no exemplo abaixo     
    rm -rf !(*.zip|*.php)
    :
    screenshot_5

Deixe uma resposta