2017-07-06 3 views
0

Verwenden der Befehlszeile in Ubuntu 16.04.2 LTS. Ich bin immer gegen Ende des Zed Shaw LPTHW, und auf dem Video ex46.py übt er den folgenden Befehl bash alle .pyc Bytecode-Dateien zu finden und zu entfernen:BASH; Verwenden von Find und -exec zum Entfernen von .pyc-Dateien

find . -name "*.pyc" -exec rm {} 

Auf dem Video diese erfolgreich entfernt alle von Zed Shaws .pyc-Dateien. Doch bei in der exakt gleichen Befehl eingeben ich die folgende Fehlermeldung erhalten:

find: missing argument to `-exec' 

Ich verstehe, dass es viele Möglichkeiten gibt .pyc Dateien zu löschen, aber da ich zusammen mit Zed Shaw verfolge ich möchte wissen, wie man es mit find und -exec macht. Was mache ich falsch?

Antwort

2

Sie nutzen könnten -delete über -exec rm mit wie der ehemalige nicht Laich ein neuer Prozess für jede zu löschende Dateiinstanz Sie können auch in die Option -type f chippen, um den Vorgang nur für Dateien anzuwenden.

find . -type f -name "*.pyc" -delete 
4

müssen Sie mit \;

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

haben einen Blick auf find -exec in der Manpage den -exec Befehl beenden.

wie Gordon Davisson in den Kommentaren erwähnt, kann es effizienter sein, um den Befehl zu beenden mit + als rm wird dann weniger mal aufgerufen:

find . -name "*.pyc" -exec rm {} + 
+4

Sie können auch '-exec rm {} +' verwenden, um sie in Stapeln zu löschen, anstatt 'rm' separat für jede Datei auszuführen. –

+1

oh. Vielen Dank. vergaß das ... –

+0

Ich dachte, das war nur ein Zeilenumbruch; Ich habe das Semikolon nicht einmal gesehen. –