131 votes

Comment supprimer tous les fichiers d'un répertoire sauf certains ?

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 ?

15voto

tquid Points 177

Le faire sans trouver :

ls | grep -v '(u|p)' | xargs rm

(Edition : "u" et "v", comme dans d'autres endroits ici, sont utilisés comme des versions génériques de regex entières. Évidemment, vous devrez faire attention à ancrer vos regex pour éviter de faire correspondre trop de choses).

Vous allez certainement vouloir un script si vous allez faire beaucoup de cela, comme d'autres l'ont suggéré.

6voto

Freddy Points 88

Dans zsh :

setopt extended_glob  # probably in your .zshrc

puis

rm ^(u|p)

o

rm *~(u|p)

La seconde fonctionnera même si vous avez ^ en $histchars pour la substitution de l'histoire, et bien sûr, vous pouvez mettre un glob arbitraire avant la balise ~ .

5voto

W_Whalley Points 3322

GLOBIGNORE prend une liste séparée par deux-points

GLOBIGNORE=u:p
rm *

3voto

Bill K Points 287

À l'époque des disquettes, j'avais un exécutable DOS appelé "Except" qui déplaçait temporairement les éléments du répertoire courant et exécutait une commande, de sorte que vous pouviez dire :

except \*.txt del \*.\*

pour supprimer tout sauf vos fichiers texte.

Ce serait une chose assez triviale à mettre en œuvre comme un Shell Shell et si c'est le genre de chose que vous êtes susceptible de faire plus de deux fois, cela semble être une bonne idée.

3voto

Bo Andersen Points 11
 find . -maxdepth 1 ! -name "u" ! -name "p" -type f -exec rm -rf {} \;

Cela supprimera tous les fichiers sauf u et p dans unix

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X