Thread Variablen in reg. Ausdrücken (s#$from#$to#g) (9 answers)
Opened by Gast at 2006-07-17 19:48

grover
 2006-07-18 00:32
#68176 #68176
User since
2006-07-17
4 Artikel
BenutzerIn
[default_avatar]
[quote=sid burn,17.07.2006, 21:33]
Quote
Es ist Bestandteil eines file renaming utilities, welches dem User gestattet seine Dateien z.B. mit regulären Ausdrücken zu verändern.

Hmm, auf welchen betriebssystem den? Bei "GNU/Linux" wird mit Perl immer das Tool "rename" mitgelifert das vom Meister Larry Wall selber programmiert wurde, und genau diese Aufgabe bereits erfüllt.

Code: (dl )
rename 'y/A-Z/a-z/' *

Dies macht aus allen Großbuchstaben kleine Buchstaben, aus dem aktuellen Verzeichnis.

Da das program ziemlich kurz ist, poste ich den Source Code mal, allerdings ohne Doku. Das Program unterliegt der Perl Lizenz.

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
use strict;

use Getopt::Long;
Getopt::Long::Configure('bundling');

my ($verbose, $no_act, $force, $op);

die "Usage: rename [-v] [-n] [-f] perlexpr [filenames]\n"
unless GetOptions(
'v|verbose' => \$verbose,
'n|no-act' => \$no_act,
'f|force' => \$force,
) and $op = shift;

$verbose++ if $no_act;

if (!@ARGV) {
print "reading filenames from STDIN\n" if $verbose;
@ARGV = <STDIN>;
chop(@ARGV);
}

for (@ARGV) {
my $was = $_;
eval $op;
die $@ if $@;
next if $was eq $_; # ignore quietly
if (-e $_ and !$force)
{
warn "$was not renamed: $_ already exists\n";
}
elsif ($no_act or rename $was, $_)
{
print "$was renamed as $_\n" if $verbose;
}
else
{
warn "Can't rename $was $_: $!\n";
}
}
[/quote]
Quote
Bei "GNU/Linux" wird mit Perl immer das Tool "rename" mitgelifert das vom Meister Larry Wall selber programmiert wurde, und genau diese Aufgabe bereits erfüllt.


OK, wusste ich garnicht. Nicht schlecht.
Bei Linux sind ja immer Tonnen von Tools dabei, die man im Zweifel
nur nicht alle kennt.

Mein Script macht aber auch:

a) refi d3-6 filename.jpg
löscht das 3.-6. Zeichen aus dem Dateinamen, also entsteht fime.jpg

b) refi lE BlaBla.AVI
wandelt nur die Extension in Kleinbuchstaben, also BlaBla.avi

c) refi a.,01 10.txt
added 01 beim bzw. vorm Punkt, also entsteht 1001.txt

und und und ....

Diese reguläre Ersetzung ist quasi nur einer von vielen
Spezialfällen des Renamens.

Gruesse

View full thread Variablen in reg. Ausdrücken (s#$from#$to#g)