Thread Suchen und ersetzen - möglichst schnell u. korrekt (12 answers)
Opened by stb2050 at 2005-04-12 14:41

stb2050
 2005-04-12 14:41
#53724 #53724
User since
2003-08-14
87 Artikel
BenutzerIn
[default_avatar]
Hi Ihr,

ich habe um die 130.000 Text-Dateien, in denen etwas ersetzt werden soll.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
opendir(DIR, "../userdaten/main");
foreach my $a (sort(readdir DIR))
{
next if $a eq '.' || $a eq '..' || $a eq 'todel';
push @members,$a;
}
closedir(DIR);

#Verzeichnis durchlaufen

foreach(@members)
{
#Daten-Datei öffnen

open(FILE, "../userdaten/main/$_");
@inhalt = <FILE>;
chomp(@inhalt);
close(FILE);

#UserID und Username auslesen

$userid = $inhalt[0];
$username = $inhalt[1];

#Textseiten einlesen

opendir(DIR, "../userdaten/main");
foreach my $a (sort(readdir DIR))
{
next if $a eq '.' || $a eq '..';
push @seiten,$a;
}
closedir(DIR);

foreach(@seiten)
{
open(FILE, "../userdaten/$userid/seiten/$_");
@content = <FILE>;
chomp(@content);
close(FILE);

@content =~ s/\userdaten\/$username\/bilder/userdaten\/$userid\/bilder/g;

open(FILE, ">../userdaten/$userid/seiten/$_");
foreach(@content) { print FILE $_ . "\n"; }
close(FILE);
}

@seiten = ();
}


Jetzt meine Fragen zum Code:

- Klappt das Suchen/Ersetzen (@content =~ s....) beim Ganzen Array, oder muss ich es doch Zeile für Zeile durchlaufen?
- Ist der Suchen/Ersetzen-Code so richtig? "userdaten/$username/bilder" soll durch "userdaten/$userid/bilder" ersetzt werden.
- Kann ich den Code noch optimieren, so dass er schneller durchläuft? Im Verzeichnis "../userdaten/main" sind ca. 13.000 Einträge, in den Verzeichnissen "../userdaten/$userid/seiten" auch ca. 10 Einträge. Es wären also 130.000 Dateien, in denen ersetzt werden muss. Und das soll ja keine 10 Stunden dauern.

Bin für jede Hilfe dankbar :-)

Liebe Grüße
Steffen

View full thread Suchen und ersetzen - möglichst schnell u. korrekt