Leere Ordner löschen
Hallo,
wie stelle ich es am geschicktesten an in einer Ordnerstruktur all die Ordner zu entfernen die weder Dateien noch Unterordner beinhalten zu löschen?
und wie dehne ich es auch die komplette Struktur aus das er auch kuckt ob es leere Unterordner, unter unter ordner,... gibt?
Hoffe ich konnte rüberbringen was genau ich meine, wäre für jeden rat sehr dankbar.
wie stelle ich es am geschicktesten an in einer Ordnerstruktur all die Ordner zu entfernen die weder Dateien noch Unterordner beinhalten zu löschen?
und wie dehne ich es auch die komplette Struktur aus das er auch kuckt ob es leere Unterordner, unter unter ordner,... gibt?
Hoffe ich konnte rüberbringen was genau ich meine, wäre für jeden rat sehr dankbar.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 105289
Url: https://administrator.de/contentid/105289
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
1 Kommentar
Hallo,
das Ganze hört sich für ein PHP-Projekt etwas seltsam an..aber machbar ist es wohl..
Ich würde grob erstmal folgendermassen vorgehen:
1. Oberste Ordnerebene einlesen
2. Nächste Ebene einlesen - ist ein Ordner leer, kann man ihn schon löschen (s. unten).
3. ..und noch eine Ebene tiefer...
4. ....das bis zum Ende der Ordnerhierarchie...nun sind alle Ordner gelöscht, die leer waren, fehlen noch die Ordner, die leer durch Löschen eines leeren Unterordners leer geworden sind..
5. und die Ebenen wieder in umgekehrter Reihenfolge nach oben lesen und ggf. löschen
Einlesen eines Verzeichnisses mit opendir(), readdir (), sind die einzigen Dateien "." und ".." ist der Ordner leer und kann direkt gelöscht werden. Ansonsten die Unterverzeichnisse öffnen und wieder die Prüf-/Löschfunktion ausführen.
Am Besten kannst Du das mit einer rekursiven Funktion umsetzen, also eine Funktion die sich für jeden Unterordner selbst aufruft.
Ich hoffe, Du kommst mit meinen groben Ausführungen klar
vg
Bytecounter
das Ganze hört sich für ein PHP-Projekt etwas seltsam an..aber machbar ist es wohl..
Ich würde grob erstmal folgendermassen vorgehen:
1. Oberste Ordnerebene einlesen
2. Nächste Ebene einlesen - ist ein Ordner leer, kann man ihn schon löschen (s. unten).
3. ..und noch eine Ebene tiefer...
4. ....das bis zum Ende der Ordnerhierarchie...nun sind alle Ordner gelöscht, die leer waren, fehlen noch die Ordner, die leer durch Löschen eines leeren Unterordners leer geworden sind..
5. und die Ebenen wieder in umgekehrter Reihenfolge nach oben lesen und ggf. löschen
Einlesen eines Verzeichnisses mit opendir(), readdir (), sind die einzigen Dateien "." und ".." ist der Ordner leer und kann direkt gelöscht werden. Ansonsten die Unterverzeichnisse öffnen und wieder die Prüf-/Löschfunktion ausführen.
Am Besten kannst Du das mit einer rekursiven Funktion umsetzen, also eine Funktion die sich für jeden Unterordner selbst aufruft.
Ich hoffe, Du kommst mit meinen groben Ausführungen klar
vg
Bytecounter