User since
2011-03-19
3472
Artikel
BenutzerIn
Wenn Dir eine DB recht ist... ein Ansatz wäre, den tree in einer Tabelle zu speichern, die drei Spalten hat, beachte die Key-setzung:
path, folder, file
KEY path(path),
PRIMARY KEY (path, folder, file)
Mit File::Find und der Callbackfunktion gehst Du ab einem bestimmten Verzeichnis durch, trennst Dirs von Files (-d, -f) und schreibst zu jedem Stammverzeichnis die Darunterliegenden in die Tabelle (on duplicate key update).
Der Duplicate Key ergibt sich, wenn alle drei felder gleich sind.
Über den Key "path" in der späteren where-Klause kriegst Du performante Abfragen auf Unterverzeichnisse und unter "path" liegende Dateien. Damit kannst Du den tree darstellen.
Für weitere Attribute (size, type ...) gibt es eine zweite Tabelle, die bei Abfragen gejoined wird.
--rosti