Question Comment supprimer tous les fichiers .pyc d'un projet?


J'ai renommé certains fichiers dans un projet assez volumineux et je souhaite supprimer les fichiers .pyc qu'ils ont laissés. J'ai essayé le script bash:

 rm -r *.pyc

Mais cela ne se répète pas dans les dossiers comme je le pensais. Qu'est-ce que je fais mal?


566
2018-04-24 11:51


origine


Réponses:


find . -name "*.pyc" -exec rm -f {} \;

964
2018-04-24 11:55



find . -name '*.pyc' -delete

Sûrement le plus simple.


889
2018-05-29 11:37



Dans la version actuelle de Debian, vous avez pyclean script qui est en python-minimal paquet.

L'utilisation est simple:

pyclean .

78
2017-12-02 11:18



Ajouter à votre ~/.bashrc:

pyclean () {
        find . -type f -name "*.py[co]" -delete
        find . -type d -name "__pycache__" -delete
}

Cela supprime tous les fichiers .pyc et .pyo, et __pycache__ répertoires. C'est aussi très rapide.

L'utilisation est simple:

$ cd /path/to/directory
$ pyclean

66
2018-04-07 15:02



Si vous utilisez bash> = 4.0 (ou zsh)

rm **/*.pyc

Notez que */*.pyc sélectionne tout .pyc fichiers dans les sous-répertoires de premier niveau **/*.pyc scanne récursivement l'ensemble de l'arborescence de répertoires. Par exemple, foo/bar/qux.pyc sera supprimé par rm **/*.pyc mais pas par */*.pyc.

Les options du shell globstar doivent être activées. Autoriser globstar:

shopt -s globstar

et pour vérifier son statut:

shopt globstar

47
2018-04-25 17:36



J'avais l'habitude d'utiliser un alias pour ça:

$ which pycclean

pycclean is aliased to `find . -name "*.pyc" | xargs -I {} rm -v "{}"'

30
2018-04-25 17:19



find . -name '*.pyc' -print0 | xargs -0 rm

La recherche recherche récursivement les fichiers * .pyc. Le xargs prend cette liste de noms et l'envoie à rm. Les options -print0 et -0 indiquent aux deux commandes de séparer les noms de fichiers par des caractères nuls. Cela lui permet de fonctionner correctement sur les noms de fichiers contenant des espaces, et même un nom de fichier contenant une nouvelle ligne.

La solution avec -exec fonctionne, mais elle crée une nouvelle copie de rm pour chaque fichier. Sur un système lent ou avec beaucoup de fichiers, cela prendra trop de temps.

Vous pouvez également ajouter quelques args supplémentaires:

find . -iname '*.pyc' -print0 | xargs -0 --no-run-if-empty  rm

L'iname ajoute une insensibilité à la casse, comme * .PYC. Le no-run-if-empty vous empêche d'obtenir une erreur de rm si vous n'avez pas de tels fichiers.


16
2018-04-25 17:12