Thread Alle Verzeichnisse Verzeichnisse in Datei ausgeben (17 answers)
Opened by wiederlader at 2007-02-07 17:40

wiederlader
 2007-02-12 11:19
#74158 #74158
User since
2007-01-03
36 Artikel
BenutzerIn
[default_avatar]
[quote=PerlProfi,09.02.2007, 22:52]Ich bin mir jetzt nicht sicher ob -r auch bei Verzeichnissen funktioniert, würde es aber mal als zusätzliche Prüfung ausprobieren.
if -d $File::Find::name && -r $File::Find::name

MfG PerlProfi[/quote]
Hallo PerlProfi, mit -r hat es leider nicht funktioniert. Aber mit folgendem Code wird zwar weiterhin die folgende Fehlermeldung ausgegeben "Can't opendir(C:/System Volume Information): Invalid argument" aber das Script läuft weiter und gibt alle weiteren Verzeichnisse aus;
Code: (dl )
1
2
3
sub wanted{
push @dirs,$File::Find::name if (-d $File::Find::name && "C:/System Volume Information" ne $File::Find::name); # -d für nur Verzeichnisse
}


Vielleich gibt es ja doch noch eine weitere Möglichkeit wie man nicht lesbare Verzeichnisse übergehen kann.

Folgend mal mein komplettes Script um alle Verzeichnisse des LW C: mit mehr als 100 Dateien auszugeben. Ist sicherlich nicht der Brüller für euch, aber ich bin damit zufrieden.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!perl -w
use strict;
use File::Find;
my @dirs;
find(\&wanted,"C:");
anzahl_readdir ();
#my $file = 'D:/Temp/dir_list.txt';
#open my $dir_list, '>', $file or die "Kann Datei $file nicht anlegen: $!";
#print $dir_list "$_\n" for @dirs;
#close $dir_list;
sub wanted{
push @dirs,$File::Find::name if (-d $File::Find::name && "C:/System Volume Information" ne $File::Find::name); # -d für nur Verzeichnisse
}

sub anzahl_readdir {
my $max_files = 100;
foreach (@dirs) {
opendir(DIR, $_) or die "Kann $_ nicht öffenen: $!";
my @dateien = readdir(DIR);
closedir(DIR);
my $anzahl = ($#dateien -1); # -1 weil readdir die .. Dateien mitliest
if ($anzahl > $max_files) {
print "Es sind $anzahl Dateien im Verzeichnis $_ enthalten\n";
}
}
}

View full thread Alle Verzeichnisse Verzeichnisse in Datei ausgeben