Je dois supprimer tous les fichiers d'un répertoire, mais exclure certains d'entre eux. Par exemple, dans un répertoire contenant les fichiers a b c ... z
Je dois tout supprimer sauf u
y p
. Y a-t-il un moyen facile de le faire ?
Réponses
Trop de publicités?Pour ceux qui préfèrent spécifier des motifs d'exclusion complexes et arbitraires (couvrant tous les noms de fichiers concernés) dans un style regexp emacs, posix-awk ou posix-extended (voir la page de manuel find), je recommande celui-ci. Il exclut u
y p
dans le répertoire actuel dans cet exemple. Cela peut être pratique pour les scripts.
find -regextype posix-awk ! -regex './(u|p)' -print0 | xargs -0 rm -rf
Encore un autre :
for FILE in ./*; do if [[ $FILE != ./u* ]] || [[ $FILE != ./p* ]];then rm $FILE; fi; done;
C'est un peu long et je ne sais pas si vous pourriez facilement en faire une fonction qui pourrait s'adapter à un nombre arbitraire d'arguments, mais cela fonctionne bien.
Et C'est de la pure bonté.