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”.
- Logue no SSH e execute shopt -s extglob
- Verifique se a função foi realmente ativada shopt extglob:
- Apagar todos os arquivos do diretório local EXCETO o arquivo
arquivo1.doc rm -rf !(arquivoarquivo1.doc)
:
O 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):
- 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):