Lars: Verzeichnisse auslesen

Hallo,

ich möchte auf meinem Linux Fileserver Verzeichnisse auslesen, um unter anderen die größe der Verzeichnisse zu bestimmen. Ich habe leider mit Perl noch keine großen Erfahrungen gemacht, und scheitere jetzt schon bei einfach Tests.

Hier, was ich bis jetzt probiert habe:

#!/usr/bin/perl -w

sub dirindex
{
        my($dir, $level) = @_;

printf "Öffne Verzeichnis $dir\n";
        opendir(VERZEICHNIS, $dir);
        @inhalt = readdir(VERZEICHNIS);
        print "@inhalt\n\n";
        foreach $Name (@inhalt)
        {
                print "$Name ", -d $Name ? " ein Verzeichnis\n" : "kein Verzeich
nis\n";
        }
        closedir(VERZEICHNIS);

}
dirindex './dir/', 1;
-----------------------------------------------------------

Das ganze soll mal rekursiv laufen und alle Verzeichnisse durchackern. Nur leider gelingt schon nicht die Prüfung, ob es sich um eine Datei oder ein Verzeichnis handelt. Das Program behauptet steif und fest, das Verzeichnisse Dateien sind.
Stellt sich die Frage, was mache ich falsch?

Danke für eure Hilfe schon mal im vorraus,

Lars

  1. Hi,

    ich möchte auf meinem Linux Fileserver Verzeichnisse auslesen, um unter anderen die größe der Verzeichnisse zu bestimmen.

    perldoc File::Find

    Nur leider gelingt schon nicht die Prüfung, ob es sich um eine Datei oder ein Verzeichnis handelt. Das Program behauptet steif und fest, das Verzeichnisse Dateien sind.

    Nein, es behauptet steif und fest, dass die von Dir untersuchten Objekte keine Verzeichnisse sind. Das ist ein Unterschied, weil dies auch gegeben ist, wenn die Objekte nicht existieren.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo,

    Das Program behauptet steif und fest, das Verzeichnisse Dateien sind.

    Nun ja, im Grunde genommen sind sie das ja auch. Schon mal ein vi
    auf ein Verzeichnis gemacht? :-)

    Greez,
    opi

    --
    Selfcode: ie:( fl:( br:^ va:) ls:] fo:) rl:( n4:? ss:| de:] ch:? mo:|
  3. Hallo,

    Stellt sich die Frage, was mache ich falsch?

    Hast Du schon einmal die von readdir() zurückgegebene Liste genauer angesehen? Ich denke nicht, denn dann hättest Du festgestellt, dass es sich lediglch um die Dateinamen handelt, ohne der für die weitere Verarbeituing notwendigen Pfadangabe.
    Du solltest also vor der Verzeichnisprüfung den Dateinamen und das gegebene Verzeichnis zu einem vollständigen Dateinamen zusammenbasteln, damit auch die richtige Datei angesprochen wird.

    BTW: für . und .. solltest Du Dir auch etwas spezielles einfallen lassen.

    Grüße
      Klaus