web-dev-qa-db-fra.com

Comment supprimer tous les répertoires avec un nom particulier?

Sous un répertoire, j'ai un tas de répertoires nommés Debug. Comment supprimer tous les répertoires Debug?

3
sontra

Ce n'est pas clair --- sous le répertoire dir_a, vous ne pouvez avoir qu'un seul répertoire nommé Debug. Ou dites-vous que vous avez dir_a/Debug, dir_a/dir_b/Debug, dir_a/dir_c/Debug et ainsi de suite?

Vous pouvez lister tous les répertoires nommés exactement Debug sous le répertoire dir_a avec:

cd dir_a   # or whatever you need to go there
find . -type d -name Debug

cela listera tous les répertoires nommés Debug dans le répertoire en cours. Pour les supprimer (vérifiez, ceci N’EST PAS UNDOABLE):

find . -depth -type d -name Debug -exec rm -r {} \; 

-depth listera Debug/Debug/ avant Debug/ pour éviter les erreurs.

En détail:

  1. find . -type d -name Debug cherchera dans tous les répertoires du répertoire actuel (.) les deux répertoires (-type d) portant le nom "Debug" (-name Debug).

  2. Le drapeau ajouté -depth lance la recherche en profondeur d'abord (cela signifie que les correspondances "plus profondes" sont trouvées avant les réponses "peu profondes").

  3. -exec ... \; indique à find d'exécuter la commande dans ... pour chaque correspondance. (Le point-virgule est cité car sinon, Shell l'interprétera).

  4. Dans la commande ... ci-dessus, le symbole spécial {} est remplacé par la correspondance actuelle.

En clair, c’est: trouvez tous les répertoires sous celui-ci dont le nom est "Debug", commencez par la profondeur, puis exécutez la commande rm -r suivie du nom complet du répertoire.

3
Rmano