[GELÖST] find - Verzeichnisse komplett nach x Tagen löschen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Diani
Beiträge: 13
Registriert: 20.01.2018 10:16:51

[GELÖST] find - Verzeichnisse komplett nach x Tagen löschen

Beitrag von Diani » 08.02.2018 09:51:30

Hallo,

wie lautet bei "find" die Syntax, wenn ich ein Verzeichnis definitiv löschen will, dass noch Dateien enthält. Dabei sucht find nach Verzeichnissen älter als 4 Tage:

Code: Alles auswählen

/usr/bin/find /var/mailbackups/ -regex '.*' -mtime +3 -type d -delete
Das wird abgewiesen mit der Meldung, dass eine Lösung nicht möglich sei, da noch Dateien existieren.

Gruß

Diani
Zuletzt geändert von Diani am 08.02.2018 10:16:08, insgesamt 1-mal geändert.

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: find - Verzeichnisse komplett nach x Tagen löschen

Beitrag von Lord_Carlos » 08.02.2018 10:02:10

Das hier sollte dir weiter helfen.

Also -delete durch z.B. -exec rm -rv {} \; ersetzen.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Diani
Beiträge: 13
Registriert: 20.01.2018 10:16:51

Re: find - Verzeichnisse komplett nach x Tagen löschen

Beitrag von Diani » 08.02.2018 10:15:38

Danke für den Hinweis!

tobo
Beiträge: 1964
Registriert: 10.12.2008 10:51:41

Re: [GELÖST] find - Verzeichnisse komplett nach x Tagen löschen

Beitrag von tobo » 08.02.2018 14:59:04

Da find rekursiv auflistet und diese Liste dann per default von oben abarbeitet, werden womöglich Hinweismeldungen auftauchen, dass Verzeichnisse nicht gelöscht werden können (da sie schon gelöscht wurden). Dazu entweder mit rm -rf oder rm -r >/dev/null die Ausgaben unterdrücken oder die Reihenfolge mit depth umkehren:

Code: Alles auswählen

$ /usr/bin/find /var/mailbackups/ -type d -mtime +3 -exec rm -rf {} +
//oder
$ /usr/bin/find /var/mailbackups/ -type d -mtime +3 -exec rm -r {} + 2>/dev/null
//oder
$ /usr/bin/find /var/mailbackups/ -depth -type d -mtime +3 -exec rm -r {} +

Antworten