web-dev-qa-db-fra.com

Est-il possible d'exclure certains fichiers de rm -rf?

J'ai un répertoire que je suis rempli par un autre utilisateur et je suis chargé de le maintenir. Je veux supprimer tout son contenu sauf un 2 fichiers avec un nom spécifique. Est-ce possible avec rm ou devrais-je faire ceci:

cp aaa/a ./a && cp aaa/b ./b && rm -rf aaa/* && mv ./a aaa/a && mv ./b aaa/b

aaa est le répertoire, a,b sont les fichiers que je veux conserver, et il y a (au moins, il peut y avoir) d'autres fichiers/répertoires.

Y a-t-il un moyen meilleur (et plus court)?

3
CIsForCookies

Avec bash étendu globs, étant donné

$ tree aaa
aaa
├── a
├── b
├── c
├── d
├── e
└── subdir

ensuite

rm -rf aaa/!(a|b)

feuilles

$ tree aaa
aaa
├── a
└── b

0 directories, 2 files
8
steeldriver