Thread regexp + löschen (11 answers)
Opened by shaihulud at 2006-10-17 14:55

Linuxer
 2006-10-17 21:26
#70818 #70818
User since
2006-01-27
3882 Artikel
HausmeisterIn

user image
Hi,

hier noch mal ein Beispiel meinerseits, dass ohne Regex auskommt.
rename kann auch fehlschlagen, deshalb sollte es auf Erfolg geprüft werden.

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
#!/usr/bin/perl
# vi:ts=4 sw=4 et:
use strict;
use warnings;

# pfad
my $dir = '/path/to/';

# dateien
my @ff = (
'file.jpl',
'---file2.jpl',
);

# erstelle ein array mit absol. pfadangaben
my @files = map { $dir . $_ } @ff;

# wie lautet die unerwuenschte prefix?
my $what = '---';

FILE:
for ( @files ) {

# length nur einmal aufrufen
my $length = length( $dir );

# prefix gefunden?
if ( index( $_, $what ) == $length ) {

my $new = $_;
substr( $new, $length, length( $what ), '' );

if ( rename( $_, $new ) ) {
$_ = $new;
}
else {

warn "rename( $_, $new ) failed: $!\n";
# tu was im Fehlerfall
next FILE;
}
}

# weiterverarbeiten von $_
print $_, $/;
}


Falls Du mal Dateien "abc.JPL" und "---abc.JPL" hast, solltest Du bedenken, dass ein rename( '---abc.JPL', 'abc.JPL' ); die "abc.JPL" mit der umbenannten "---abc.JPL" überschreibt.
Das kann u.U. nicht so erwünscht sein!
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!

View full thread regexp + löschen