Comment puis-je supprimer tous les fichiers correspondant à un modèle?


76

Lorsque je reviens dans Mercurial, il reste plusieurs .origfichiers. J'aimerais pouvoir exécuter une commande pour les supprimer tous.

J'ai trouvé des sources qui disent de courir:

rm **/*.orig

Mais cela me donne le message:

rm: impossible de supprimer `* / .orig ': aucun fichier ou répertoire de ce type

J'ai aussi essayé:

  • rm -rv *.orig

  • rm -R *\.orig


Réponses:


149

Utilisez la findcommande (avec soin!)

find . -name '*.orig' #-delete

J'ai commenté la commande delete mais une fois que vous êtes satisfait de la correspondance, supprimez le #de la ligne et tous les fichiers doivent être supprimés.


Est-ce que cela fonctionne de manière récursive?
Frank Barcenas

2
@FrankBarcenas Yeah - find fait tout récursivement. Si vous voulez limiter le fonctionnement, vous pouvez jouer avec les arguments -maxdepthou -mindepth.
Oli

6
Laissez définitivement le -deleteà la fin des drapeaux. find . -delete -name '*.orig'ignorera le filtre et encombrera tout votre répertoire.
Michael

1
@ Michael, oui. J'ai déjà résolu le problème avecgit clean -fdx
kyb

1
@kamal j'utiliser probablement encore trouver , mais avec ses -regexou -iregexprédicats. L'analyse des noms de fichiers (lorsque vous les distribuez) peut parfois être difficile à effectuer en toute sécurité.
Oli

6

"find" a des techniques très avancées pour rechercher dans tous les répertoires ou les répertoires actuels et les fichiers rm.

find ./ -name ".orig" -exec rm -rf {} \;

3
Quel est l'avantage de l'utilisation -delete?
muru

@muru Je suppose que vous obtiendrez une invite pour chaque fichier si vous supprimez -rf.
Peter

@ Peter pas nécessairement. Même alors, alors? La réponse utilise -rfet finda -ok.
muru

@muru il semble que -delete ne supprime pas les dossiers
Andrii Karaivanskyi

@AndriiKaraivanskyi à moins que la suppression échoue, c'est le cas.
Muru

1

J'ai supprimé tous les fichiers commençant par .nfs000000000 comme ceci

rm .nfs000000000*
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.