CLI AI

Dateien älter als 30 Tage in Linux sicher löschen

2026-05-01

Die kurze Antwort ist find /var/log/app -type f -mtime +30 -delete. Die lange: Führen Sie ihn zuerst ohne -delete aus, denn die missglückte Variante dieses Befehls nimmt das ganze Verzeichnis mit. Hier die sichere Reihenfolge, formuliert wie im Gespräch.

1. Zeig mir erst, was verschwinden würde

clai
$ clai zeig mir Dateien in /var/log/app, die älter als 30 Tage sind, lösche nichts→ find /var/log/app -type f -mtime +30 -printf '%TY-%Tm-%Td  %p\n'2026-06-01  /var/log/app/app-june.log2026-07-10  /var/log/app/app-july.log

find ohne Aktion gibt nur aus. Lesen Sie die Liste, bevor Sie ihr vertrauen – genau diesen Schritt überspringen die meisten.

2. Wie viel Platz bringt das wirklich?

clai
$ clai wie viel Speicherplatz würden diese alten Dateien freigeben→ find /var/log/app -type f -mtime +30 -printf '%s\n' | awk '{s+=$1} END {printf "%.1f KB in %d files\n", s/1024, NR}'6.0 KB in 2 files

Sind es ein paar Kilobyte, liegt Ihr Plattenproblem woanders und Sie können aufhören.

3. Jetzt löschen

clai
$ clai lösche diese Dateien, die älter als 30 Tage sind→ find /var/log/app -type f -mtime +30 -delete

-delete gibt bei Erfolg nichts aus. Diese Stille ist normal.

4. Nur .log, nur die oberste Ebene

clai
$ clai lösche nur .log-Dateien älter als 30 Tage in /var/log/app, ohne Unterordner→ find /var/log/app -maxdepth 1 -type f -name '*.log' -mtime +30 -delete

-maxdepth 1 verhindert, dass ein Aufräumjob in ein eingehängtes Volume abwandert.

5. Nach Kalenderdatum statt „vor N Tagen“

clai
$ clai finde Dateien, die vor dem 1. Juli 2026 geändert wurden→ find /var/log/app -type f ! -newermt '2026-07-01' -printf '%TY-%Tm-%Td  %p\n'2026-05-01  /var/log/app/old.txt2026-06-01  /var/log/app/app-june.log

Praktisch, wenn die Grenze ein Release-Datum ist und kein gleitendes Fenster.

6. Die leeren Verzeichnisse aufräumen

clai
$ clai entferne die leeren Ordner, die unter /var/log/app übrig sind→ find /var/log/app -mindepth 1 -type d -empty -delete

-mindepth 1 hindert find daran, das Verzeichnis zu löschen, auf das Sie ihn angesetzt haben.

Stolperfallen

  • -delete gehört ans Ende. find wertet den Ausdruck von links nach rechts aus, also löscht find . -delete -mtime +30 alles, bevor das Alter überhaupt geprüft wird. Der teuerste Tippfehler in diesem Artikel.
  • -mtime +30 heißt mindestens 31 Tage. find schneidet auf volle 24-Stunden-Perioden ab und +30 bedeutet strikt größer als 30 – eine 30,5 Tage alte Datei passt also nicht.
  • Finger weg von -atime. Die meisten Systeme mounten mit relatime, Zugriffszeiten werden bestenfalls einmal täglich aktualisiert. Rechnen Sie mit Änderungszeit (-mtime) oder Statusänderung (-ctime).

Verwandte Fragen

Warum hat find -delete mehr gelöscht als erwartet? Fast immer die Flag-Reihenfolge – siehe erste Stolperfalle. -delete impliziert außerdem -depth, was den Baumdurchlauf ändert.

Wie lasse ich das nächtlich laufen? Den getesteten Befehl mit absoluten Pfaden in cron: 0 3 * * * find /var/log/app -type f -mtime +30 -delete. Vorher von Hand testen – cron hat eine andere Umgebung und deutlich weniger Publikum für Fehler.

Funktioniert das unter macOS? Ja, BSD-find kennt -mtime, -delete und -maxdepth. -printf gibt es nur bei GNU; unter macOS nehmen Sie -print.

Siehe auch

Unsicher, ob ein Befehl sicher ist? CliAI kennzeichnet jeden erzeugten Befehl als SAFE, CAUTION oder DANGER, destruktive verlangen eine getippte Bestätigung. In einer Zeile installieren.