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 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 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 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 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 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 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
-deletegehört ans Ende.findwertet den Ausdruck von links nach rechts aus, also löschtfind . -delete -mtime +30alles, bevor das Alter überhaupt geprüft wird. Der teuerste Tippfehler in diesem Artikel.-mtime +30heißt mindestens 31 Tage.findschneidet auf volle 24-Stunden-Perioden ab und+30bedeutet strikt größer als 30 – eine 30,5 Tage alte Datei passt also nicht.- Finger weg von
-atime. Die meisten Systeme mounten mitrelatime, 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
- Cron ohne Kopfzerbrechen: „jeden Montag um 3 Uhr“ → fertiger Zeitplan
- Schluss mit find-Flags auswendig lernen: fragen Sie einfach
- Alte Logs und Backups mit einem Satz aufräumen
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.