it-swarm.com.de

Entfernen von Ordnern, die älter als 5 Tage sind

Ich habe einen Sicherungsordner, der eine kalenderähnliche Ordnerstruktur zum Organisieren von Dateien verwendet. Ich möchte diese alle 5 Tage löschen, lösche aber am Ende die vollständige Sicherung, da der Hauptordner älter als 5 Tage ist.

Ordnerstruktur:

Backup
    -> 2017
          -> October
                 -> 28
                 -> 29
                 -> 30
                 -> 31
          -> November
                 -> 1
                 -> 2
                 -> 3

Ich habe versucht, diesen Befehl auszuführen:

find /mnt/backup/* -type d -mtime +5 -execdir rm -rf {} \;

Das Verzeichnis 2017 wird jedoch entfernt, da es älter als 5 Tage ist, was wiederum bedeutet, dass alle Unterordner entfernt werden. Ich möchte hier nur Verzeichnisse löschen, die 5 Tage alt sind. Wenn zum Beispiel heute der 3. November war, möchte ich nur die Verzeichnisse 28 und 29 löschen. Wenn es dann der 5. November wird, möchte ich, dass das gesamte Oktober-Verzeichnis gelöscht wird, da alles darin jetzt älter als 5 Tage ist. Irgendwelche Vorschläge?

Vielen Dank

2
Stuart

Verwenden Sie -mindepth 1, wenn Sie nicht möchten, dass 2017 berührt wird:

$ mkdir -p foo/2017/{October/{28..31},November/{1..3}}
$ touch -d 'now - 6 days' foo/2017/October/{28,29} foo/2017
$ find foo/* -mindepth 1 -mtime +5
foo/2017/October/28
foo/2017/October/29
$ find foo/* -mtime +5
foo/2017
foo/2017/October/28
foo/2017/October/29

Wenn Sie mit foo anstelle von foo/2017 beginnen, verwenden Sie -mindepth 2:

$ find foo/ -mindepth 2 -mtime +5
foo/2017/October/28
foo/2017/October/29
3
muru