Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10711[/thread]

Dir ohne Unterordner in .txt Datei u.ä.. Wie? (Seite 5)

Leser: 25


<< |< 1 2 3 4 5 6 7 >| >> 61 Einträge, 7 Seiten
stormy2211
 2007-11-03 22:51
#101802 #101802
User since
2007-11-02
20 Artikel
BenutzerIn
[default_avatar]
Adresse des Ordners: T:\\alle\Freunde$\
In Perl müsste ich es dann so schreiben oder?:
Code (perl): (dl )
1
2
opendir(Freunde, 'T://alle/Freunde') or die "Konnte Ordner nicht öffnen ($!)\n";
#soll ich jetzt bei Freunde das $-Zeichen weglassen oder dranlassen so wie auch beim ursprünglichen Ordner?

mfg stormy
topeg
 2007-11-03 22:55
#101803 #101803
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Kein Ahnung. Aber probier es doch einfach mit einem kleinen Testscript aus?
Code (perl): (dl )
1
2
3
4
#!/usr/bin/perl
my $dir='T://alle/common';
opendir(DIR, $dir) or die "Konnte $dir nicht öffnen ($!)\n";
close(DIR);


Nebenbei, hast du schon mal angefangen dich durch ein Perl Tutorial zu arbeiten?
stormy2211
 2007-11-03 23:15
#101809 #101809
User since
2007-11-02
20 Artikel
BenutzerIn
[default_avatar]
Bin grad noch dabei ist ein sehr ausführliches, hat 42 Kapitel. Ist so ein Lernzirkel. Ist aber nicht nur für Anfänger enthält zum Schluss sehr komplexe Abhandlungen. Dann hab ich noch das Buch von O´reilly zu Hause "Einführung in Perl" wobei dem es teilweise schwer verständlich ist auch wenn im Vergleich zu anderen einfacher.
mfg stormy
schmetterling
 2013-02-18 14:24
#165860 #165860
User since
2013-02-18
6 Artikel
BenutzerIn

user image
hi
anscheinend gibt es auf dieser Seite schon laaaaange keine diskussion mehr. nach viel googeln habe ich diese seite gefunden und den vollkommenen code auf der ersten Seite ausprobiert aber vergeblich.
mein Problem ist folgendes:
ich habe ein Verzeichnis mit mehreren Unterverzeichnisse. In diesen Unterverzeichnisse gibt es Dateien , deren Namen ich in eine .txt Datei listen möchte.
mit diesem code ,
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
27
28
29
30
31
use strict;
use warnings;


my @fileliste;

# "open" mit Fehlermeldung wenn es nicht klappt.
opendir(SPAUF, 'C:/perlprogs/SP_AUF/SALES_0000') or die "Konnte Ordner nicht öffnen ($!)\n";

while(my $Filename = readdir(SPAUF))
{

# "." und ".." überspringen
next if($Filename eq '.' or $Filename eq '..');

# Ist es eine datei?
if(-d 'C:/perlprogs/SP_AUF/SALES_0000/'.$Filename)
{
opendir(SPAUF, 'C:/perlprogs/SP_AUF/SALES_0000/'.$Filename) or die "**Konnte Ordner nicht öffnen ($!)\n";

}
else {
push(@fileliste,$Filename);
}
}
closedir(SPAUF);


open(SPEICHERN,'>','C:/perlprogs/SP_AUF/fileliste.txt') or die "Konnte Liderliste nicht Speichern ($!)\n";
print SPEICHERN join("\n",@fileliste);
close(SPEICHERN);


hat es nicht geklappt, denn es werden nur die Dateien im ersten unterordner (00000001)in .txt gespeichert. es bearbeitet nicht die weiteren unterordner. (mein Pfad lautet : C:/perlprogs/SP_AUF/SALES_0000/(hier gibt es unterordner namens 00000001 bis 000000060))

die chance, dass jemand hier mir antwortet ist glaub ich gering, aber dem Versuch ist es wert.

vielen Dank im Voraus
Linuxer
 2013-02-18 14:34
#165862 #165862
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Warum gräbst Du so einen alten Thread aus anstatt einfach einen neuen zu öffnen?
Was lässt Dich annehmen, dass hier nichts los sei und Du keine Antwort kriegen würdest?

Zum Programm sei Dir die Verwendung von CPAN:File::Find oder CPAN:File::Find::Rule angeraten.

Beispiele dazu sollte es hier ausreichend geben.
Z.B. Alle Dateien eines Formats suchen...
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
topeg
 2013-02-18 15:38
#165867 #165867
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Wenn du ein neues Verzeichnis auf machst musst du auch eine neues FileHandle benutzen. Ansonsten wird das Vorherige Überschrieben. Hättest du Lexialische Variablen genommen und diese immer mit "my" passend erzeugt, wäre dir das nicht passiert.

Hier etwas Code wie es funktioniert:
Code (perl): (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/perl
use strict;
use warnings;

my $Dir='C:/perlprogs/SP_AUF/SALES_0000';
my $OutFile='C:/perlprogs/SP_AUF/fileliste.txt';

my @FileListe;

# "open" mit Fehlermeldung wenn es nicht klappt.
opendir(my $DirHandle, $Dir) or die "Konnte Ordner '$Dir' nicht öffnen ($!)\n";
while(my $Filename = readdir($DirHandle))
{
  # "." und ".." überspringen
  next if($Filename eq '.' or $Filename eq '..');
 
  # Ist es ein Verzeichnis?
  if(-d $Dir.'/'.$Filename)
  {
    my $SubDir=$Dir.'/'.$Filename;
    opendir(my $SubDirHandle, $SubDir) or die "  Konnte Ordner '$SubDir' nicht öffnen ($!)\n";
    while(my $SubFilename = readdir($SubDirHandle))
    {
      # ist es keine Datei?
      next if(!-f $SubDir.'/'.$SubFilename);

      push(@FileListe, $Filename.'/'.$SubFilename);
    }
    closedir($SubDirHandle);
  }
  # ist es eine Datei?
  elsif(-f $Dir.'/'.$Filename)
  {
    push(@FileListe, $Filename);
  }
}
closedir($DirHandle);


open(my $FileHandle,'>',$OutFile) or die "Konnte '$OutFile' nicht Öffnen ($!)\n";
print $FileHandle join("\n",@FileListe);
close($FileHandle);
pq
 2013-02-18 19:41
#165878 #165878
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
2013-02-18T13:24:51 schmetterling
hi
anscheinend gibt es auf dieser Seite schon laaaaange keine diskussion mehr.
[...]
die chance, dass jemand hier mir antwortet ist glaub ich gering, aber dem Versuch ist es wert.

mich würde das auch mal interessieren, ganz ernst gemeint. nur weil ein einzelner thread 5 jahre alt ist, heisst das ja nicht, dass es keine neueren threads gibt.
oben in der navi-leiste siehst du links wie "Letzte 24h / 7 Tage".

wenn du das nächste mal eine frage hast, häng dich nicht unbedingt damit unter den thread (es sei denn, du beziehst dich ganz konkret auf etwas darin). kopier einfach den link des threads und bezieh dich darauf in einem neuen thread.
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
Linuxer
 2013-02-18 22:37
#165881 #165881
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Basierend auf meiner vorigen Antwort hier mal ein Lösungsvorschlag mit File::Find::Rule:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#! /usr/bin/env perl
use strict;
use warnings;

use File::Find::Rule;

my @dirs = @ARGV;
if ( !@dirs ) {
    warn "No directories specified.\nUsing '.' for search.\n";
    @dirs = ( '.' );
}

my @files = File::Find::Rule->file()
                            ->in( @dirs );

for my $file ( @files ) {
    print $file, "\n";
}


Das gibt die gefundenen Dateien auf STDOUT aus. Will man es in einer Datei haben, kann man die Ausgabe umleiten:

Code: (dl )
perl Skript.pl C:/durchsuche/mich  > C:/hab/ich/dich/gefunden.txt


Oder man verwendet eine Ausgabe, wie sie topeg in den letzten drei Zeilen seines Codes eingesetzt hat.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
schmetterling
 2013-02-20 10:15
#165903 #165903
User since
2013-02-18
6 Artikel
BenutzerIn

user image
Quote
Warum gräbst Du so einen alten Thread aus anstatt einfach einen neuen zu öffnen?

weil ich mich mit sowas nicht gut auskenne.
Hi
Ich war ja stundenlang beim Googeln und wusste nicht mehr weiter. Dann habe ich diesen Thread gefunden, wo es auch in Vergleich mit anderen Foren bessere Beispiel und Erklärungen gibt.
mit "Seite" meinte ich auch diesen Thread, der seit 2007 ungerührt war. Ich wusste, dass andere Threads aktuell sind, aber wusste halt nicht , wie und was ich tun soll. Deshalb dachte ich , ich schreib mal einfach meine Frage mit der Hoffnung, dass jemand mir antwortet.
Den Code von "topeg" habe ich getestet und es hat super funktioniert.Vielen Dank.
Das Problem ist halt, dass ich Anfänger bin und lerne gerade von verschiedenen Büchern,Webseiten usw. Einiges ist mir noch unklar.
Tut mir Leid, falls ich für Aufregung gesorgt habe und ich danke den jenigen, die mir so ausführlich geantwortet haben.
Ich glaube ich werde euch weiterhin noch fragen stellen müssen :) vllt schon heute !

Was ich eigentlich vor hatte, war, dass ich die einzelnen unterordner dursuche, um eine txt-Datei zu finden, die zu öffnen und nach einem bestimmten Muster zu suchen. Aber ich dachte ich sollte erst mal schaffen, die unterordner zu öffnen und zugriff auf die Dateien zu haben(was mir nicht gelungen ist :( )
Ich freue mich , dass es hier jemandem gibt, der mich unterstützen und helfen kann.

Ich werde mich mal gleich damit auseinandersetzen. mal sehen wie weit ich komme. ich will und muss es schaffen :(
Last edited: 2013-02-20 10:48:39 +0100 (CET)
Linuxer
 2013-02-20 11:35
#165904 #165904
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Viel Glück und Erfolg ;-)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
<< |< 1 2 3 4 5 6 7 >| >> 61 Einträge, 7 Seiten



View all threads created 2007-11-02 21:31.