Wie kann ich alle Dateien in einem Ordner löschen, auf die in einem bestimmten Zeitraum nicht zugegriffen wurde?


14

Ich möchte einen nächtlichen Cron-Job ausführen, bei dem alle Dateien in einem Ordner gelöscht werden, auf die seit mindestens einer Woche nicht mehr zugegriffen wurde. Was ist der effizienteste Weg, dies in bash zu tun?


2
findkann basierend auf atime filtern. Die "Korrektheit" von atime hängt zumindest von der Konfiguration ab (siehe noatime).

Antworten:


20

Sie wollen das findWerkzeug .

find folder -depth -type f -atime +7 -delete

(Dies wird löschen Sie alle Dateien ( nur Stammkunden , keine Rohre, spezielle Geräte, Verzeichnisse, symbolische Links) in den angegebenen Ordner und alle Unterverzeichnisse (rekursiv) , wo die letzte Zugriffszeit ist länger als 7 Tage vor.)


6
Möglicherweise möchten Sie dort hinzufügen, -type fum sicherzustellen, dass nur Dateien und nicht ganze Verzeichnisse gelöscht werden.
Shadur

3

Vielleicht möchten Sie herausfinden, tmpwatchwelche in einen Cron-Job eingefügt werden können. Sie müssen nicht selbst mitspielen find. Bei RHEL liegt es in der tmpwatchDrehzahl.


Dies ist definitiv die elegantere Lösung, aber ich bevorzuge die Portabilität von find.
Bloudermilk
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.