Supprimer tous les fichiers sauf un avec rm


10

Existe-t-il un moyen de supprimer tous les fichiers d'un répertoire à l' exception d'un avec un certain nom de fichier? Par exemple, si j'avais un répertoire contenant les fichiers file1, file2et dontdelete. Y aurait-il un moyen de supprimer rapidement file1, file2et non dontdelete? Je sais que je pourrais simplement le faire, rm file1 file2mais cela ne fonctionnerait pas pour un tas de fichiers. De plus, je suis sous Mac OS X si cela fait une différence.


Un simple caractère générique peut être votre solution: le fichier rm * supprimera le fichier1 et le fichier2 mais pas la suppression. Si vos besoins sont plus complexes, en fonction du langage de script shell, vous pouvez générer une liste de fichiers que vous souhaitez supprimer à l'aide d'une expression régulière et la diriger vers la commande rm.
therobyouknow

@Rob: Oui, ma situation est plus complexe que ça. Et la réponse d'Ignacio a fonctionné. Merci quand même!
Wuffers

Réponses:


16

En bash:

shopt -s extglob
rm !(dontdelete)

1
+1 Wow solution très succincte. Gardera cela à l'esprit si j'en ai besoin.
therobyouknow

cela peut-il être étendu pour inclure plusieurs répertoires que vous ne souhaitez pas supprimer
mcgrailm
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.