Antworten:
Sie können es mit diesem Befehl tun
find /path/to/files* -mtime +365 -exec rm {} \;
Einige erklären
/path/to/files*
ist der Pfad zu den Dateien.
-mtime
wird verwendet, um die Anzahl der Tage anzugeben, die die Datei alt ist. +365 findet Dateien, die älter als 365 Tage sind, was einem Jahr entspricht
-exec
Ermöglicht es Ihnen, einen Befehl wie rm einzugeben.
Bearbeiten Danke an @Oli note -> du kannst es machen durch:
find /path/to/files* -mtime +365 -delete
"{}"
in verwandelt, {}
bevor sie an find
erster Stelle übergeben wird; find
ersetzt sie dann. Das Zitieren {}
wird für den Fall empfohlen {
und }
selbst kann manchmal von der Shell speziell behandelt werden - was nichts zu tun hat Sie mit Leerzeichen. Und oft {}
muss nicht zitiert werden. ich nicht jede Situation denken kann, zumindest beim Aufruf Fund aus einem Bourne - Shell-Stil, wenn {}
, mit nichts drin, selbst als Argument erscheinen würde
find
Griffe für sich selbst entkommen, aber es ist keine schlechte Angewohnheit, beim Schreiben von Skripten dabei zu sein. Es tut nicht weh.
find
nicht mit dem Entkommen fertig würden , "{}"
hätten Sie immer noch den gleichen Effekt wie - {}
nur würde keiner funktionieren, anstatt dass beide funktionieren. Dasselbe {}
und "{}"
dasselbe Verhalten kann und kann nicht an einer Besonderheit von find liegen. Es ist eine schlechte Angewohnheit, zu verwechseln, was durch die Shell erweitert wird, mit dem, was durch ein anderes Programm erweitert wird . Wir alle machen diesen Fehler gelegentlich, aber es ist immer noch ein Fehler - keine bewährte Methode. (Man könnte immer noch zitieren {}
, um den Menschen zu zeigen, dass es kein Muster für die Klammererweiterung ist, aber das hat nichts mit der Wortspaltung zu tun.)
{}
in zitieren-exec
(so liest es-exec rm "{}" \;
). Dies stellt sicher, dass Leerzeichen richtig behandelt werden ... Und Sie könnten-delete
stattdessen einfach die Funktion verwenden-exec
.