Aber eigentlich findhat eine Abkürzung dafür: die -deleteOption:
find -type f -name '*.sql' -mtime +15 -delete
Bitte beachten Sie die folgenden Warnungen in man find:
Warnings: Don't forget that the find command line is evaluated
as an expression, so putting -delete first will make find try to
delete everything below the starting points you specified. When
testing a find command line that you later intend to use with
-delete, you should explicitly specify -depth in order to avoid
later surprises. Because -delete implies -depth, you cannot
usefully use -prune and -delete together.
PS Beachten Sie, dass das direkte Weiterleiten an rmkeine Option ist, da rmbei der Standardeingabe keine Dateinamen erwartet werden. Was Sie gerade tun, ist, sie rückwärts zu leiten.
Vielen Dank. Ich habe die Manpage gelesen und diese Flagge ausprobiert. Ich übergebe einen vollständigen Pfad, erhalte aber "/ usr / www2 / bar / htdocs / foo / rsync / httpdocs / db_backups /: relativer Pfad möglicherweise nicht sicher" zurück. Irgendeine Idee warum?
Vielen Dank. Ich bin mir nicht sicher, ob ich dem Beitrag gut gefolgt bin, aber als ich ihre Lösung emuliert und -delete am Ende des Befehls gesetzt habe, wurden alle SQL-Dateien unabhängig von der Mod-Zeit gelöscht ... aber es gab keine Warnung, also denke ich Das ist ein Fortschritt ...
Jerrygarciuh
1
@jerrygarciuh Autsch, ich hoffe, nichts Wertvolles ging verloren ... mansagt: When testing a find command line that you later intend to use with -delete, you should explicitly specify -depth in order to avoid later surprises.Ich bin mir nicht sicher, wie das angesichts der anderen von Ihnen verwendeten Optionen von Bedeutung sein würde, aber haben Sie das versucht?
Lev Levitsky
Nein, habe ich nicht, aber nichts ging verloren. Diese Dateien werden von einem anderen Server synchronisiert, auf dem sie auch gespeichert sind.
Ich bevorzuge Ihre Antwort als die, die wegen des "Leerzeichens im Namen" akzeptiert wird. Mit dem Befehl "-exec" ist dies besser möglich als mit Pipe. Vielen Dank.
Slim Aloui
3
Eine andere einfachere Methode ist die Verwendung locate Befehls. Leiten Sie dann das Ergebnis an weiter xargs.
man
sagt:When testing a find command line that you later intend to use with -delete, you should explicitly specify -depth in order to avoid later surprises.
Ich bin mir nicht sicher, wie das angesichts der anderen von Ihnen verwendeten Optionen von Bedeutung sein würde, aber haben Sie das versucht?Wählt Dateien in mehr
/usr/www/bar/htdocs
als 15 Tagen aus und entfernt sie.quelle
Eine andere einfachere Methode ist die Verwendung
locate
Befehls. Leiten Sie dann das Ergebnis an weiterxargs
.Beispielsweise,
quelle
Angenommen, Sie befinden sich nicht in dem Verzeichnis, das die * .sql-Sicherungsdateien enthält:
Die obige Option -v ist praktisch. Sie gibt ausführlich aus, welche Dateien beim Entfernen gelöscht werden.
Ich möchte die Dateien auflisten, die zuerst gelöscht werden, um sicherzugehen. Z.B:
quelle