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

JD Isaacks
la source
Jetez un oeil à superuser.com/a/699287/92334
Lu55

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.

Oli
la source
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 {} \;
utilisateur2038042
la source
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*
Taras Vaskiv
la source