Dateien löschen, die älter sind als xx Tage

Manchmal muss man etwas Platz schaffen und hat als wichtigstes Auswahlkriterium das Alter der Dateien. Man will nicht alles löschen, sondern nur "alten Krempel", den man sicher nicht mehr braucht. Man kann dann mit einem Dateimanager mit dem Sortieren anfangen - oder man löst die Aufgabe relativ elegant über die Kommandozeile. Letzteres kann natürlich in Skripten ebenfalls sinnvoll eingesetzt werden. Hierbei hilft das Kommando find mit dem Parameter -mtime. Im Beispiel arbeite ich mit Dateien, die älter als 30 Tage sind.

  • Wenn man zur Sicherheit oder für eine Ausgabe in  eine Protokolldatei gerne erst mal "nur gucken" und nichts anfassen möchte verwendet man den Parameter -print:

    find /tmp/* -mtime +30 -print

     

  • Um die Dateien zu löschen, verwendet man den Parameter -delete:

    find /tmp/* -mtime +30 -delete

     

Natürlich kann man damit auch noch andere Befehle kombinieren. Bspw. kann man die Dateien ja auch verschieben, statt sie zu löschen oder die Ausgabe mit weiteren Optionen etwas erweitern. Die Übergabe der Dateien, auf die die Suchkriterien zutreffen an ein anderes Programm geschieht mit dem Parameter -exec:

find /tmp/* -mtime +30 -exec ls -la {} \;