On Die, 15 Okt 2002 at 23:24 (+0200), Jan Trippler wrote: [...] ich rede mal mit mir selber - macht eh am meisten Spaß, ich streite mich so selten mit mir ;-) Folgende Variante täte mich zufrieden stellen (das wurde mir in der Kommandozeile zu unübersichtlich, deshalb als separates Script): <Script ren.pl> #! /usr/bin/perl -w # ren.pl # Jan.Trippler@t-online.de 2002-10-16 use strict; use File::Basename; defined $ARGV[0] or die "usage: ren.pl file\n"; -f $ARGV[0] or die "file $ARGV[0] doesn't exist\n"; my %rep = ("Ä" => "Ae", "Ö" => "Oe", "Ü" => "Ue", "ä" => "ae", "ö" => "oe", "ü" => "ue", "ß" => "ss", "-" => "_" ); (my $sf = $ARGV[0]) =~ s/.*\.([^\.]*)/.$1/; my $fn = File::Basename::basename $ARGV[0], $sf; my $dn = File::Basename::dirname $ARGV[0]; foreach my $r (keys %rep) { $fn =~ s/$r/$rep{$r}/g; } $fn =~ s/[^\w]//g; rename $ARGV[0], $dn . "/" . $fn . $sf; Das Script führt für _eine_ Datei, die als 1. Argument auf der Kommandozeile übergeben werden muss die gewünschten Ersetzungen durch (es lässt sich also auch außerhalb des beschriebenen Problems betreiben). Der Hash %rep kann problemlos um weitere Ersetzungen ergänzt werden. Zum Füttern: find /pfad/zum/mp3-verzeichnis -type f -exec ren.pl "{}" \; Eine Einschränkung bleibt bestehen: Ich habe nicht getestet, wie auf Dateinamen mit Zeilenumbruch reagiert wird. Ich bin aber nach wie vor der Meinung, dass sowas pervers ist *g*, da AFAIK nur die wenigsten Kommandos damit umgehen können. Die beschriebene Vorgehensweise, das Perl-Script für jede Datei erneut aufzurufen, ist nicht sehr ressourcenschonend. Besser wäre es, das Durchsuchen des Verzeichnisbaums gleich mit in das Script zu integrieren - dazu ist es mir jetzt aber zu spät - äh früh ;-) Jan