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.

Wuffers
la source
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)
Ignacio Vazquez-Abrams
la source
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