Como apagar arquivos na linha de comando com expressões regulares?

17

Digamos que eu tenha 20 arquivos chamados FOOXX, onde XX é o número do arquivo, por exemplo, 01, 02, etc.

No momento, se eu quiser apagar todos os arquivos abaixo do número 10, isso é fácil e eu uso apenas um caractere curinga, por exemplo, rm FOO0 *

No entanto, se eu quiser excluir arquivos específicos em um intervalo, por exemplo, 13-15, isso se torna mais difícil.

rm FPP [13-15] não funciona e pergunta se desejo excluir todos os arquivos. O Few1 [3-5] do Likewse deseja excluir todos os arquivos que começam com o FOO1

Então, qual é a melhor maneira de excluir intervalos de arquivos como este?

Eu tentei tanto o bash quanto o zsh, e não acho que eles diferem tanto para uma tarefa tão básica?

    
por Jack 06.05.2010 / 14:00

3 respostas

29

No bash você pode usar:

rm FOO1{3..5}

ou

rm FOO1{3,4,5}

para excluir o FOO13, o FOO14 e o FOO15.

As expansões de Bash são documentadas aqui .

    
por 06.05.2010 / 14:10
11

Para futuros leitores, o comando find também pode excluir arquivos. Eu resolvi isso para um problema semelhante:

find . -type f -regex '...' -delete

mas a resposta escolhida é a mais simples para essa pergunta.

    
por 13.06.2014 / 16:02
6

ls | grep regex | xargs rm

    
por 06.05.2010 / 14:39