Hallo, Am Fre, 29 Sep 2006, Tilo Lutz schrieb:
Am Donnerstag, 28. September 2006 19:12 schrieb Michael Herrmann:
Etwas komfortabler und weniger fehleranfällig (z.B. Pipe...!) ist KRename, damit solltest Du weniger Probleme haben.
krename ist nicht geeignet und funktioniert nicht. Die kaputten Umlaute sind auch in Verzeichnissen. Nach dem das Verzeichnis umbenannt wurde, findet krename nicht mehr dessen Inhalt. Ich habe mir ein kleines Perl-Skript geschrieben, dass die Umwandlung übernehmen soll:
#! /usr/bin/perl
use strict; use warnings; Siehe Signatur.
sub renameloop { my $dirname = $_[0]; opendir(DIR, $dirname);
my @entries = readdir(DIR); foreach $oldfilename (@entries) {
my @entries = grep { !/^\.{1,2}$/ } readdir(DIR); foreach my $oldname( @entries ) {
if ( $oldfilename ne "." && $oldfilename ne ".." ) {
entfaellt.
if (-d $dirname."/".$oldfilename) { renameloop($dirname."/".$oldfilename); } my $newfilename = $oldfilename; $newfilename =~ tr /???Á/ä/; $newfilename =~ tr /???À/ö/; $newfilename =~ tr /??????/ü/; $newfilename =~ tr /ÔöÇ/Ä/; $newfilename =~ tr /???ì/Ö/; $newfilename =~ tr /Ôûä/Ü/; $newfilename =~ tr /ÔûÇ/ß/;
Wie sind die Sonderzeichen eingegeben? Und sind das die richtigen? Uberpruefe die Dateinamen mit 'ls -b' und 'ls | od -t x1'. Und ueberpruefe ebenfalls die Zeichen im Script! Ausserdem: lies in perldoc perlop die Doku zu 'tr'. Du suchst: if (-d $dirname."/".$oldfilename) { renameloop($dirname."/".$oldfilename); } my $newfilename; { ## $_ vereinfacht hier den Schreibaufwand erheblich local $_ = $oldfilename; s/???Á/ä/g; s/???À/ö/g; s/??????/ü/g; s/ÔöÇ/Ä/g; s/???ì/Ö/g; s/Ôûä/Ü/; s/ÔûÇ/ß/; $newfilename = $_; }
if ( $oldfilename ne $newfilename ) { rename ($dirname."/".$oldfilename, $dirname."/".$newfilename); }
Du solltest hier noch testen, ob die Zieldatei existiert! if ( -e $newfilename ) { warn "new filename '$newfilename' for " . "'$oldfilename' exists. skipping"; } [..]
Leider macht das Skript noch mehr kaputt:
Siehe oben. -dnh -- Use strict! *WHAM* Strict, I tell you! And -w! *WHAM* *WHAM* *WHAM* -- Skud