Schrift
[thread]8737[/thread]

Alle Verzeichnisse Verzeichnisse in Datei ausgeben (Seite 2)

Leser: 1


<< |< 1 2 >| >> 18 Einträge, 2 Seiten
bloonix
 2007-02-09 01:59
#74153 #74153
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=wiederlader,08.02.2007, 10:57]
Code: (dl )
print $fh "$_\n" for @dirs;
[/quote]
print $fh join("\n", @dirs);

... würde auch gehen, es sei, du bestehst auf das letzte Newline. :)
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
pq
 2007-02-09 13:05
#74154 #74154
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
ein newline am ende ist auf jeden fall sauberer.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
docsnyder
 2007-02-09 14:16
#74155 #74155
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
Code: (dl )
print $fh join("\n", @dirs) . "\n";

;)
wiederlader
 2007-02-09 17:24
#74156 #74156
User since
2007-01-03
36 Artikel
BenutzerIn
[default_avatar]
So, nachdem ich das File::Find Modul an einem kleinen Unterverzeichnis umfangreich erfolgreich getestet habe, habe ich es über das komplette LW D: suchen lassen.
Code: (dl )
find(\&wanted,"d:");


Dabei ist folgende Fehlermeldung aufgeschlagen:

Can't opendir(d:/System Volume Information): Invalid argument

Wie kann ich die Suche des Unterverzeichnisses (d:/System Volume Information) unterbinden/ausschließen?

Kann man der Subroutine
Code: (dl )
1
2
3
sub wanted{
push @dirs,$File::Find::name if -d $File::Find::name;
}

noch eine bestimmte Option mitgeben (sowie mit -d nur nach Verzeicnnisse gesucht wird)?
PerlProfi
 2007-02-09 23:52
#74157 #74157
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
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
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";
}
}
}
nepos
 2007-02-12 14:11
#74159 #74159
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, könnte das Problem hier eventuell auch am Leerzeichen im Verzeichnisnamen liegen?
renee
 2007-02-12 14:49
#74160 #74160
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Damit hat Windows normalerweise keine Schwierigkeiten...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



View all threads created 2007-02-07 17:40.