Unix Magie, alle .pyc-Dateien aus einem Baum von Verzeichnissen löschen?

11

Gibt es eine schnelle Möglichkeit, alle .pyc-Dateien aus einem Verzeichnisbaum zu löschen?

Interstar
quelle

Antworten:

28

Wenn Sie GNU finden, dann wollen Sie wahrscheinlich

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

Wenn Sie etwas Tragbares brauchen, sind Sie besser dran

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

Wenn Geschwindigkeit eine große Sache ist und Sie GNU find und GNU xargs haben, dann

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

Dies wird Sie jedoch wahrscheinlich nicht so schnell beschleunigen, da Sie meistens auf E / A warten.

Cian
quelle
perfekt danke. Es sind die Xargs, die ich immer vergesse
Interstar
2
Nur für den Fall, dass ich Dateien mit Leerzeichen in den Namen habe, habe ich mir angewöhnt, immer -print0 und "xargs -0" zu verwenden.
Paul Tomblin
Sie haben völlig Recht, sollten ursprünglich daran gedacht haben., Bearbeitet, um dies widerzuspiegeln.
Cian
4
Sie können '-delete' auch direkt anstelle von '-print0 | verwenden xargs -0 rm '. Aber das stimmt, dass diese Option nicht in allen Versionen von 'find' vorhanden ist.
Rolaf
6

mit dem Befehl find:

find /path/to/start -name '*.pyc' -exec rm -f {} \;
Slubman
quelle
Das ist zu langsam. Die Verwendung von xargs ist schneller. Wenn Ihre Version von find dies unterstützt, ändern Sie das " \;" am Ende in " +".
Bis auf weiteres angehalten.
1
Es mag etwas langsamer sein - es wird "rm" einmal für jede Datei ausgeführt, anstatt sie zu stapeln - aber es ist die portabelste Methode, dies zu tun. Das OP hat nicht angegeben, welche Art von Unix er verwendet hat, und Solaris findet immer noch nicht die Funktion -print0.
Kenster
1
+1, sagte OP Unix nicht Linux, dies ist die beste tragbare Lösung.
Theotherreceive
Ich denke, diese Lösung ist die einzige Möglichkeit, Tonnen von Dateien zu entfernen. Wenn ich mich nicht irre, kann die Verwendung von xargs zu lange Fehler in einer Befehlszeile hinterlassen. +1, es ist auch meine Wahl seit Jahren.
drAlberT
Wenn Sie zum Erstellen Ihres Projekts ein Makefile verwenden, möchten Sie dieses möglicherweise dem Ziel "sauber" hinzufügen.
Tom Newton
1

cd zum Anfang des Verzeichnisbaums dann:

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

Garry Harthill
quelle
Es ist nicht notwendig cd, einfach das oberste Verzeichnis in den findBefehl einzufügen (anstelle von "Punkt").
Bis auf weiteres angehalten.
Dies behandelt überhaupt keine Leerzeichen.
Cian