staging.inyokaproject.org

Fehlermeldung bei find (Unterordner)

Status: Ungelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

dolfi56

Anmeldungsdatum:
13. Mai 2014

Beiträge: Zähle...

Hallo zusammen, ich benutze folgenden Befehl, um Automatisch den Inhalt eines Verzeichnisses zu löschen:

1
find /media/ordner/ -mtime +60 -delete

Damit soll Inhalt des "ordners" gelöscht werden, der älter als 60 Tage ist. Jetzt erhalte ich als Fehlermeldung:

find: ‘/media/ordner/unterordner' kann nicht gelöscht werden.: Das Verzeichnis ist nicht leer

Die Dateien in "ordner" und "unterordner" werden wohl gelöscht, der "unterordner jedoch nicht.

Fehlt da im Befehl was, damit auch Unterordner gelöscht werden, die älter als 60 Tage sind?

dingsbums

Anmeldungsdatum:
13. November 2010

Beiträge: 3793

Vielleicht solltest du das Ganze in 2 Schritte aufteilen:

  • Löschen der alten Dateien

    find /media/ordner/ -type f -mtime +60 -delete
  • Löschen leerer Unterordner

    find /media/ordner/* -type d -empty -delete

Den * nicht vergessen, sonst ist "ordner" auch gleich mit weg. Und bitte erst testen und nicht gleich auf wichtige und zufällig ungesicherte (*hust*) Datenordner loslassen ... 😉

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

dingsbums schrieb:

Vielleicht solltest du das Ganze in 2 Schritte aufteilen:

  • Löschen der alten Dateien

    find /media/ordner/ -type f -mtime +60 -delete
  • Löschen leerer Unterordner

    find /media/ordner/* -type d -empty -delete

Ersteres ist eigentlich nicht notwendig, weil -delete auch -depth implizit aktiviert und damit Dateien in dem Order auch geloescht werden.

Aber hier ist ohnehin unklar, worauf sich -mtime beziehen soll: Nur auf Dateien? Gilt das auch fuer Ordner? Oder sollen Ordner einfach nur geloescht werden, wenn sie leer sind?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

dolfi56 schrieb:

Fehlt da im Befehl was, damit auch Unterordner gelöscht werden, die älter als 60 Tage sind?

Das prinzipielle Problem hier ist, dass Dateien in Ordnern übrig bleiben können, so dass die Ordner nicht gelöscht werden können. Und, falls Du Dich wunderst, wie das kommt: Du kannst eine Datei vor über 60 Tagen in einem Ordner angelegt und danach den Ordner nicht mehr geändert haben - die Datei aber schon. Somit ist die Datei zu jung um basierend auf Deinem Kriterium gelöscht zu werden, der Ordner aber älter.

Falls es Dir im Wesentlichen darum geht, alte Dateien zu löschen und Ordner, die dadurch leer werden, kann man das so machen und benötigt dafür auch nicht zwei Schritte:

1
find /media/ordner/ \( -type f -mtime +60 -o -type d -empty \) -delete

Zum Testen

1
find /media/ordner/ -depth \( -type f -mtime +60 -o -type d -empty \)
Antworten |