web-dev-qa-db-fra.com

Comment supprimer des fichiers en ligne de commande avec des expressions régulières?

Disons que j'ai 20 fichiers nommés FOOXX, où XX est le numéro du fichier, par exemple 01, 02, etc.

Pour le moment, si je veux supprimer tous les fichiers inférieurs au numéro 10, c'est simple et j'utilise un caractère générique, par exemple, rm FOO0 *.

Cependant, si je veux supprimer des fichiers spécifiques dans une plage, par exemple 13-15, cela devient plus difficile.

rm FPP [13-15] ne fonctionne pas et me demande si je souhaite supprimer tous les fichiers. Likewse rm FOO1 [3-5] souhaite supprimer tous les fichiers commençant par FOO1

Alors, quel est le meilleur moyen de supprimer des plages de fichiers de ce type?

J'ai essayé avec bash et zsh, et je ne pense pas qu'ils diffèrent autant pour une tâche aussi fondamentale?

18
Jack

En bash, vous pouvez utiliser:

 rm FOO1 {3..5} 

ou

 rm FOO1 {3,4,5} 

supprimer FOO13, FOO14 et FOO15.

Les accolades Bash sont documentées ici .

31

Pour les futurs lecteurs, la commande find peut également supprimer des fichiers. Je me suis installé pour un problème similaire:

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

mais la réponse choisie est la réponse la plus simple à cette question.

13
GregWW

ls | grep regex | xargs rm

6
gogiel