[gelöst]löschen mit find klappt nicht

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Marmor626
Beiträge: 24
Registriert: 24.01.2010 08:54:41

[gelöst]löschen mit find klappt nicht

Beitrag von Marmor626 » 21.11.2012 15:30:15

Hallo zusammen.

Ich habe ein kleines Problem.
Ich möchte Dateien und leere Ordner löschen.
Die zu löschenden Dateien sollten älter als 120 Tage sein - das ist kein Problem:

Code: Alles auswählen

find /ort/von/daten/* -type f -mtime +120 -exec rm -rf {} \;
Jetzt sollen auch die Verzeichnisse gelöscht werden.
Hier kann ich aber nicht mit der Zeit von 120 Tagen arbeiten, da es ja sein kann, daß ein Verzeichnis schon vor einem Jahr angelegt wurde, sich darunter aber neuere Dateien befinden.
Die nächste Überlegung war, daß ich leere Verzeichnisse lösche

Code: Alles auswählen

find /ort/von/daten/* -type d -empty -exec rmdir{} \;
Aber auch das scheint nicht zu funktionieren, da Verzeichnisse noch mal Unterverzeichnisse haben und deshalb nicht "leer" sind.

Hat von Euch jemand eine Idee, wie ich Verzeichnisse löschen kann, welche keine Dateien enthalten (aber u.U Verzeichnisse beinhalten kann)?

Vielen Dank für Eure Hilfe.

Gruß
Robert
Zuletzt geändert von Marmor626 am 23.11.2012 06:48:07, insgesamt 1-mal geändert.

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: löschen mit find klappt nicht

Beitrag von syssi » 21.11.2012 15:53:44

Lass doch mal in beiden Faellen das "-exec ..." weg:

Code: Alles auswählen

find /ort/von/daten/* -type f -mtime +120
Liefert dies Treffer? Diese Treffer werden dann auch von "rm -rf {} \;" im Exec-Parameter geloescht. Die Syntax ist soweit korrekt. Wenn das Problem weiterhin besteht, dann solltest du einmal die Version deiner "findutils" posten. Moeglicherweise hast du eine seltsame find-Version.

Marmor626
Beiträge: 24
Registriert: 24.01.2010 08:54:41

Re: löschen mit find klappt nicht

Beitrag von Marmor626 » 21.11.2012 16:06:31

Hallo syssi
syssi hat geschrieben:Lass doch mal in beiden Faellen das "-exec ..." weg:
Das Problem ist nicht, daß die Befehle nicht funktionieren, das Ergebnis ist nicht das gewünschte.

Der find ... -type f -mtime +120 löscht ja auch alle Dateien zuverlässig.
Jetzt sollen nur noch die Verzeichnisse gelöscht werden.
Der Gleiche Befehl mit -type d würde zwar funktionieren, orientiert sich aber nur an dem Datum des Verzeichnisses - ungeachtet, daß sich darunter noch Dateien befinden könnten, die neueren Datums sind als die Verzeichnisse selber (und somit nicht vom -type f Befehl gelöscht wurden).

ein exec mit rmdir geht auch nicht, denn es kann ja sein, daß ein Verzeichnis nochmal leere Unterverzeichnisse beinhaltet und damit aber scheinbar nicht leer ist.
Gleiches gilt für den -empty Parameter von "find".

Ich bräuchte also eine Möglichkeit Verzeichnisse zu löschen, die älter als 120 Tage sind UND keine Dateien mehr enthalten (aber Unterverzeichnisse egal welchen Datums enthalten könnten - und das über mehrere Ebenen).

Stehe da voll auf dem Schlauch.

Gruß
Robert

brummer
Beiträge: 181
Registriert: 19.02.2007 19:21:23

Re: löschen mit find klappt nicht

Beitrag von brummer » 21.11.2012 16:50:53

Code: Alles auswählen

find /ort/von/daten/ -empty -type d -delete
löscht alle leeren Verzeichnisse, inklusive leerer Unterverzeichnisse.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: löschen mit find klappt nicht

Beitrag von rendegast » 21.11.2012 17:22:19

eine Möglichkeit Verzeichnisse zu löschen, die älter als 120 Tage
Das Problem hierbei ist, daß beim vorherigen Löschen von Dateien die mtime des beinhaltenden Verzeichnisses geändert wird.
Eventuell wäre 'find -ctime ...' möglich?

Alternativ gleich beim Anlegen eine Art Index erstellen, zBsp. über Namen_Datum o.ä.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: löschen mit find klappt nicht

Beitrag von Cae » 21.11.2012 17:45:16

Man kann find sagen, dass es erst bis zum aeussersten Zweig des Verzeichnissbaumes gehen soll, bevor es irgendwelche Aktionen faehrt. Der Paramter ist -depth, in [1] und den umliegenden Posts wuerde darueber diskutiert.

Gruss Cae

[1] viewtopic.php?p=889497#p889497
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Marmor626
Beiträge: 24
Registriert: 24.01.2010 08:54:41

Re: löschen mit find klappt nicht

Beitrag von Marmor626 » 21.11.2012 20:31:25

Hallo brummer, rendegast und Cae

Danke für Euere Hinweise.
Ich werde das morgen gleich testen und werde hier sicher meine Ergrbnisse mitteilen.

Gruß
Robert

Marmor626
Beiträge: 24
Registriert: 24.01.2010 08:54:41

Re: löschen mit find klappt nicht

Beitrag von Marmor626 » 22.11.2012 15:44:31

Hallo brummer, rendegast und Cae

Hallo.

Der Tipp mit find -empty -type d -delete brachte den Erfolg.

Herzlichen Dank für´s Helfen.

Gruß
Robert

P.S.: irgendwie bin ich zu blöd das Thema als Gelöst zu setzen, bin ich blind oder zu doof dazu. Ehrliche Antwort erwünscht ......

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: löschen mit find klappt nicht

Beitrag von Cae » 22.11.2012 15:57:21

Marmor626 hat geschrieben:P.S.: irgendwie bin ich zu blöd das Thema als Gelöst zu setzen, bin ich blind oder zu doof dazu. Ehrliche Antwort erwünscht ......
Ehrlich: Du hast keine Ahnung.
Freundlich gesagt: Du kannst es nicht wissen. Hier gibt's keinen Harken oder sowas, du gehst einfach oben im ersten Post auf "Aendern" und schreibst da "[geloest] foo" als Betreff rein.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Marmor626
Beiträge: 24
Registriert: 24.01.2010 08:54:41

[gelöst] löschen mit find klappt nicht

Beitrag von Marmor626 » 23.11.2012 06:47:40

Halloe Cae
Cae hat geschrieben: Ehrlich: Du hast keine Ahnung.
Freundlich gesagt: Du kannst es nicht wissen. Hier gibt's keinen Harken oder sowas, du gehst einfach oben im ersten Post auf "Aendern" und schreibst da "[geloest] foo" als Betreff rein.

Gruss Cae
Hatte sowas schon befürchtet ....

Danke für den Hinweis.

Fruß
Robert
Zuletzt geändert von Meillo am 23.11.2012 12:27:46, insgesamt 1-mal geändert.
Grund: Eckige Klammer ergaenzt

Antworten