Schon mal versuchen, Dateien mit Unix-Shell-Find zu löschen? Verwenden Sie die Option -delete

8

Das ist in Posts schon oft aufgetaucht, also erwähne ich es als Dankeschön an alle hilfsbereiten Leute auf stackoverflow.

Wollten Sie schon einmal eine Reihe von Löschungen von der Kommandozeile / Terminal in Unix machen? Vielleicht hast du ein Konstrukt wie

benutzt %Vor%

Schauen Sie auf die Antwort für einen eleganten Weg, dies zu tun.

    
kd4ttc 06.06.2012, 22:21
quelle

2 Antworten

19

So machen Sie das mit der Option -delete!

Verwenden Sie die Befehlsoption find -delete:

%Vor%

Natürlich, probiere einen Trockenlauf ohne das -delete aus, um zu sehen, ob du löschen willst, was du willst !!! Diese Computer laufen so verdammt schnell! ; -)

    
kd4ttc 06.06.2012, 22:32
quelle
6

+1, um die Initiative zu ergreifen und die Lösung für Ihr Problem selbst zu finden. Ein paar eher unbedeutende Anmerkungen:

Ich würde empfehlen, die Verwendung der -type f -Flagge zu übernehmen, wenn Sie Dateien löschen möchten. Dies beschränkt find auf Dateien, die tatsächlich Dateien sind (d. H. Keine Verzeichnisse oder Verknüpfungen). Andernfalls könnten Sie versehentlich ein Verzeichnis löschen, das wahrscheinlich nicht ist, was Sie tun wollten. (Das heißt, es sei denn, Sie haben ein Verzeichnis namens "something.pyc", das wäre kein Problem für Ihren Beispielbefehl. Es ist im Allgemeinen nur eine gute Gewohnheit.)

Wenn Sie die -exec rm.. -Version verwenden, wird sie auch schneller ausgeführt, wenn Sie dies stattdessen tun:

%Vor%

Diese Version fügt einem einzelnen Aufruf von rm so viele Argumente wie möglich hinzu und reduziert so die Gesamtzahl der Aufrufe von rm . Es funktioniert ähnlich wie das Standardverhalten in xargs .

    
Tim Pote 06.06.2012 23:07
quelle

Tags und Links