Unix magic, supprimer tous les fichiers .pyc d'une arborescence de répertoires?

11

Existe-t-il un moyen rapide de supprimer tous les fichiers .pyc d'une arborescence de répertoires?

interstar
la source

Réponses:

28

Si vous avez trouvé GNU, vous voulez probablement

find <directory name> -name '*.pyc' -delete

Si vous avez besoin de quelque chose de portable, il vaut mieux

find <directory name> -name '*.pyc' -exec rm {} \;

Si la vitesse est un gros problème et que vous avez GNU find et GNU xargs,

find <directory name> -name '*.pyc' -print0|xargs -0 -p <some number greater than 1> rm

Cependant, il est peu probable que cela vous accélère autant, car vous attendez principalement sur les E / S.

Cian
la source
parfait merci. Ce sont les xargs que j'oublie toujours
interstar
2
Juste au cas où j'ai des fichiers avec des espaces dans les noms, j'ai pris l'habitude de toujours utiliser -print0 et "xargs -0".
Paul Tomblin
Vous avez tout à fait raison, vous auriez dû y penser à l'origine., Modifié pour refléter cela.
Cian
4
Vous pouvez également utiliser directement '-delete' au lieu de '-print0 | xargs -0 rm '. Mais c'est vrai que cette option n'est pas présente dans toutes les versions de 'find'.
rolaf
6

en utilisant la commande find:

find /path/to/start -name '*.pyc' -exec rm -f {} \;
slubman
la source
C'est trop lent. L'utilisation de xargs est plus rapide, ou si votre version de find le prend en charge, remplacez le " \;" à la fin par un " +".
pause jusqu'à nouvel ordre.
1
Cela peut être un peu plus lent - il exécute "rm" une fois pour chaque fichier au lieu de les regrouper - mais c'est la façon la plus portable de le faire. L'OP n'a pas dit quel type d'Unix il utilisait, et Solaris find n'a toujours pas la fonction -print0.
Kenster
1
+1, OP dit unix pas linux, c'est la meilleure solution portable.
theotherreceive
Je pense que cette solution est la seule permettant de supprimer des tonnes de fichiers, si je ne me trompe pas, l'utilisation de xargs peut laisser une erreur de ligne de commande trop longue. +1, c'est mon choix depuis des années aussi.
drAlberT
Si vous utilisez un makefile pour construire votre projet, vous voudrez peut-être l'ajouter à la cible "nettoyer".
Tom Newton
1

cd au début de l'arborescence des répertoires puis:

trouver . -name '* .pyc' | xargs rm -f

Garry Harthill
la source
Ce n'est pas nécessaire cd, il suffit de mettre le répertoire supérieur dans la findcommande (à la place de "point").
pause jusqu'à nouvel ordre.
Cela ne gère pas du tout les espaces.
Cian