type
Option zum Filtern von Ergebnissen
find
akzeptiert den type
Option zum Auswählen von beispielsweise nur Dateien.
find /path/to/files -type f -mtime +10 -delete
Lassen Sie -delete
weg um zu zeigen, was es löschen würde, und wenn Sie das überprüft haben, fahren Sie fort und führen Sie den vollständigen Befehl aus.
Das würde nur auf Dateien laufen, nicht auf Verzeichnissen. Verwenden Sie -type d
im umgekehrten Fall nur Verzeichnisse auflisten, die mit Ihren Argumenten übereinstimmen.
Zusätzliche Optionen
Vielleicht möchten Sie man find
lesen , da es einige weitere Optionen gibt, die Sie in Zukunft benötigen könnten. Beispiel:-maxdepth
würde es Ihnen ermöglichen, die gefundenen Elemente nur auf eine bestimmte Tiefe einzuschränken, z. -maxdepth 0
würde nicht in Unterverzeichnisse rekursiv.
Einige Anmerkungen
-
Ich frage mich, wie der Befehl einen Ordner entfernt hätte, da Sie einen Ordner nicht mit
rm
entfernen können nur. Sie benötigenrm -r
dafür. -
Auch
/path/to/files*
ist verwirrend. Meinten Sie/path/to/files/
oder erwarten Sie, dass der Platzhalter auf mehrere Datei- und Ordnernamen erweitert wird? -
Geben Sie
{}
ein in einfachen Anführungszeichen, also'{}'
um zu vermeiden, dass der ersetzte Datei-/Verzeichnisname von der Shell interpretiert wird, genauso wie wir das Semikolon mit einem umgekehrten Schrägstrich schützen.
Wie in den vorherigen Antworten (+1 für beide) besteht der Trick darin, -type f
zu verwenden Prädikat.
Beachten Sie, dass anstelle von -exec rm '{}'
Sie können auch -delete
verwenden Prädikat. Aber tun Sie das nicht. Mit -exec rm '{}'
Sie können (und sollten) zuerst -exec echo rm '{}'
tun um zu überprüfen, ob dies wirklich das ist, was Sie wollen. Führen Sie danach den Befehl ohne echo
erneut aus .
Mit -delete
ist schneller (kein zusätzliches fork()
und execve()
für jede Datei), aber das ist riskant, weil -delete
funktioniert auch als Bedingung, also:
# delete *.tmp files
find . -type f -name '*.tmp' -delete
aber wenn Sie NUR Argumente tauschen:
# delete ALL files
find . -type f -name '*.tmp' -delete
Falls Sie jemals find
brauchen und rm
Um schneller mit Tonnen von Dateien zu arbeiten, sehen Sie sich find ... | xargs ... rm
an UNIX-Idiom.