rm - remover vários arquivos excetuando alguns

Publicado por Sandro Marcell em 05/07/2010

[ Hits: 41.333 ]

Blog: http://sanmarcell.wordpress.com

 


rm - remover vários arquivos excetuando alguns



Imagine a seguinte situação: você tem um diretório com dezenas de arquivos e deseja excluí-los, exceto por alguns considerados importantes. Como fazer?

Bem, há duas maneiras (ou mais, depende de você!) para isso.

Método braçal: neste caso você copiaria os arquivos importantes para um diretório temporário, limparia o diretório desejado e depois moveria os arquivos do diretório temporário novamente para sua origem.

Método KISS (Keep It Simple Stupid!): você, como usuário inteligente que é, usaria apenas um único comando, curto e rápido.

rm !(arquivoA|arquivoB|...|arquivoN)

Mas o que é isso?!

Isso se chama "Extended Pattern Matching" e é apenas um dos vários existentes, está documentado no manual do Zsh, Ksh e Bash.

Como esse tal de EPM funciona?

Consulte as man pages para mais informações!

No nosso exemplo o funcionamento se dá da seguinte forma:

Case com tudo, exceto '!' por um dos padrões '(...|...)' informados.

Obs.: Para usuários do bash, pode ser necessário ativar o suporte a "Extended Globbing" com a seguinte opção:

shopt extglob

Mais detalhes: salve seu dia, consulte as man pages.

Falou!

Outras dicas deste autor

Zsh: Menu de autocompletar para o comando kill

Otimizando o Firefox para conexões banda larga

Removendo linhas duplicadas não-consecutivas

php-meter: Medidor que mostra o consumo de banda no link de internet

CGI + Shell Script: gerando listagem de IPs disponíveis em sua rede

Leitura recomendada

Escutando música pelo terminal do Linux

Como recortar um vídeo via linha de comando

Instalação do tema Numix Circle em sistemas GNU/Linux

Iniciando uma segunda interface gráfica no Linux

Personalizando terminais Aterm, Eterm, RXVT e Xterm

  

Comentários
[1] Comentário enviado por eldermarco em 05/07/2010 - 13:22h

É.. só não deixe para fazer os testes com os tais arquivos importantes... =]

[2] Comentário enviado por rony_souza em 16/07/2012 - 12:53h

Se eu der um rm *.jpg, eu apago todos arquivos .jpg. Existe uma maneira (bash do Linux) de apagar todos os arquivos EXCETO os jpg?

[3] Comentário enviado por SMarcell em 17/07/2012 - 09:10h


[2] Comentário enviado por rony_souza em 16/07/2012 - 12:53h:

Se eu der um rm *.jpg, eu apago todos arquivos .jpg. Existe uma maneira (bash do Linux) de apagar todos os arquivos EXCETO os jpg?


Essa dica é justamente pra isso amigão!

$ rm !(*.jpg)

[4] Comentário enviado por jojoneswillyan em 23/07/2014 - 18:46h

olá,
tenho um diretório que são nomeados com suas respectivas datas, exemplo:


2007-01
2007-02
2008-08
....

até 2014-07

quero deletar todas* as pastas exceto as do ano de 2014-*

Como seria esse Comando?

Grato pela atenção desde já.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts