Tom: Dateien rekursiv löschen, System hängt sich auf

Beitrag lesen

Hello Steffen,

Du durchläufst einfach rekursiv alle Ordner und kannst mit is_dir() oder is_file() prüfen, ob es sich um eine Datei oder ein Verzeichnis handelt und dementsprechend handeln. Denk' auch noch daran, dass es einen Ordner namens '.' und einen Ordner namens '..' gibt.

Das rekursive Durchlaufen von Verzeichnissen ist auf einem Linux-System nicht ganz so trivial
Du musst nämlich damit rechnen, dass es Links auf bereits durchlaufene (höhere) Verzeichnisebenen gibt. Das musst Du auf jeden Fall ausschließen. Die Pfade der Verzeichnise müssen also immer erst in den Realpath gewandelt werden.

Man kann Links auch nicht einfach pauschal ausschließen. Wenn sie denn auf Nebenverzeichnisse verweisen, die dazugehören sollen, müssen sie ja verfolgt werden.

Daher würde ich erst die Verzeichnisstruktur in einenm Array sammeln, dann alle Verzeichniseinträge rausschmeißen und dann den Löschvorgang durchführen. Dafür benötigt man dann nicht unbedingt echte Rekursion, sondern eine Schleife, die erst die Verzeichnisse einsammelt, dann die darin enthaltenen Verzeichnisse, usw.

siehe hierzu auch
http://forum.de.selfhtml.org/archiv/2009/4/t185872/#m1234051
http://forum.de.selfhtml.org/archiv/2007/12/t163759/#m1066617

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de