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?A rm
tout sauf u,p
dans bash, tapez simplement :
rm !(u|p)
Pour cela, l'option suivante doit être définie :
shopt -s extglob
Voir plus : glob - Wiki de Greg
Vous pouvez utiliser find
find . ! -name u ! -name p -maxdepth 1 -type f -delete
-
!
nie l'expression suivante -
-name
spécifie un nom de fichier -
-maxdepth 1
fera en sorte que find ne traite que le répertoire spécifié (find
parcourt par défaut les répertoires) -
-type f
ne traitera que les fichiers (et pas par exemple les répertoires) -
-delete
supprimera les fichiers
Vous pouvez ensuite ajuster les conditions en regardant l'onglet page de manuel de find
更新情報
- Gardez à l'esprit que l'ordre des éléments des expressions est important (voir la documentation).
-
Testez d'abord votre commande en utilisant
-print
au lieu de-delete
find . ! -name u ! -name p -maxdepth 1 -type f -print
Un peu similaire à cette réponse mais aucune option spéciale n'est nécessaire, pour autant que je sache, ce qui suit est une fonctionnalité "ancienne" supportée par tout /bin/sh (vaguement) ressemblant à Shell (par exemple bash, zsh, ksh, etc.)
rm [^up]
- Réponses précédentes
- Plus de réponses