c't 21/09
opendir(DIR, ".") or die;
while (my $oldname = readdir(DIR))
{
my $newname = $oldname;
if ($newname =~ s/^(.*?),\s*(.*?)\s* - /$2 $1 - /)
{
print "$oldname -> $newname\n";
if (-e $newname)
{
print "WARNUNG: Neuer Name existiert.\n";
}
else
{
rename $oldname, $newname or die;
}
}
}
Windows-Anwender müssen dafür zunächst Perl installieren. Sie finden es wie das Skript über den folgenden Link zum Download.
Ein paar Worte zur Funktionsweise der zentralen, unleserlichen Zeile: In Perl bedeutet eine Anweisung der Form s/x/y/ suche x und ersetze es durch y. Für x steht in diesem Fall ein regulärer Ausdruck, der bedeutet: Am Zeilenanfang ^ irgendwas (.*?), ein Komma, optionaler Leerraum \s*, noch irgendwas (.*?), optionaler Leerraum \s*, Leerzeichen, Bindestrich, Leerzeichen. Die Klammern um die beiden Ausdrücke für „irgendwas“ sorgen dafür, dass Perl sich merkt, worauf „irgendwas“ gepasst hat, in diesem Fall den Nachnamen und den Vornamen. Beim Ersetzen kann man diese Strings als $1 und $2 wieder verwenden, und zwar in umgekehrter Reihenfolge, damit anschließend „Vorname Nachname“ dasteht.
Wenn der reguläre Ausdruck auf einen Dateinamen nicht passt, rührt das Skript ihn nicht an. Das ist zum Beispiel der Fall, wenn zwischen Vor- und Nachname kein Komma steht – dann ist der Dateiname ja schon korrekt. Zudem wird es sich auch nicht selbst umbenennen, wenn man es der Einfachheit halber in das Verzeichnis kopiert, in dem es arbeiten soll.
Version zum Drucken | Per E-Mail versenden | Heft bestellen
Permalink: http://heise.de/-781338
Das aktuelle Heft ist jetzt im Handel erhältlich.
Ältere Artikel können Sie über unser Zeitschriften-Archiv bestellen.