Wie lösche ich Dateien unter Linux, die älter als 1 Jahr sind? [Duplikat]


9

Mögliches Duplizieren:
Wie lösche ich Dateien, die unter Linux ein bestimmtes Datum überschreiten?

Wie lösche ich alle Dateien im aktuellen Verzeichnis und in den Unterverzeichnissen, die älter als ein Jahr sind?


1
Tun Sie man find. Boom.

1
Hinweis für Schließer: Diese andere Frage ist tatsächlich verwirrend anders, ihre Antworten sind nicht ganz einfach umzusetzen.
Gilles 'SO - hör auf böse zu sein'

Antworten:


15
find /the/dir/to/start/in -type f -mtime +365 -ls -exec rm -f -- {} \;

2
find /path/to/files -type f -mtime +365 -deletewäre einfacher.
Chris S

-delete ist nicht in meinem Aix-Fund enthalten, daher bin ich nicht daran gewöhnt, es zu verwenden. Ich bin froh, dass es in anderen Find-Binärdateien implementiert ist.
Bot403

find … -exec rm -f {} +wird ein wenig schneller sein (und es ist tragbar, außer für alte Systeme).
Gilles 'SO - hör auf böse zu sein'

1
Es ist auch eine gute Idee, diese zu verwenden, --wenn der erste Dateiname mit a beginnt -(obwohl Sie garantieren können, dass dies nicht passiert, wenn das übergebene Verzeichnis findnicht mit a beginnt -).
Gilles 'SO - hör auf böse zu sein'

Dies ist äußerst gefährlich, da Sie nicht sehen, was Sie löschen möchten, und warum in aller Welt Sie das Löschen mit -f erzwingen? Einige Dateien sind aus einem bestimmten Grund geschützt. Es ist viel sicherer, die Ergebnisse der Suche in einer Datei zu speichern, sie dann zu untersuchen und rm für den Inhalt der Datei auszuführen.
Petr

2

Wenn Sie viele Dateien entfernen, ist dies normalerweise viel schneller als "-exec" oder das Weiterleiten an "xargs":

find . -type f -mtime +365 | perl -lne unlink
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.