Automatisches umtauschen von Umlauten.

BurningIce

BurningIce

Grünschnabel
Hi,

hat hier jemand vielleicht mal son Skript geschrieben das Umlaute in Dateinamen in normale Buchstaben umtauscht. Für ganze Verzeichnisbäume.

also /home/ich/bilder/pornos/dickemöpse.jpg wird zu dickemoeps.jpg und
/home/ich/dömsdömd wird zu doemsdoemd?

grüsse
 
Ich auch! Aber in Perl, über eine Textdatei "lernfähig" (gibt ja auch nicht-deutsche Sonderzeichen...)
 
Ein entsprechendes fertiges Skript ist in der Perl FAQ zu finden!

BTW Was bitte sind normale Buchstaben?

Falls du ASCII Standard meinst, sind da auch die häßlichen Leerzeichen mit includiert!
 
Kann ich das bitte auch haben?
Oh ha. Das war 5 Jahre her, ich mußte ne Weile suchen und das mag auch zu überarbeiten sein.

Die Idee ist aber einfach: Eine Textdatei mit Feldtrenner einlesen, wo vorne ein "blah" steht, das durch das dahinter stehende "blubber" ersetzt werden soll. Verbesserungsvorschläge sind vermutlich sinnvoll.

Es ersetzt übrigens keine Sonderzeichen in Verzeichnisnamen, in der entsprechenden Schleife könnte man das aber einbauen.

Ich deklariere das mal als PHP, weil die Forensoftware ja PHP ist und entsprechende Syntaxhervorhebung kann... und es durchsucht test/ - da muß natürlich was variables hin.

PHP:
#!/usr/bin/perl
print "Content-type: text/plain\n\n";

$|=1;

&filename("test/");

sub filename {
  local $replace_file = "sonderzeichen.txt";
  $!=undef;
  open(DATEI, "<$replace_file");
  print $!;
  @zeilen = <DATEI>;
  close(DATEI);

  for(@zeilen){
     @split_line = split(/-!-/, $_);
     $from_to{$split_line[0]} = $split_line[1];
  }

  local ($searchdir) = $_[0];
  print "Open $searchdir\n";
  opendir(DIR, $searchdir);
  local(@files) = readdir(DIR);
  print "Basis-Dateiliste:\n";
  print "Dirname=$searchdir\n";
  for(@files){
       print "- $_";
       if(-d "$searchdir$_"){
          print " - Verzeichnis";
       }
       print "\n";
  }
  print "\n";
  closedir DIR;

  for $dat_name(@files){
    if (-d "$searchdir$dat_name"){
      if (($dat_name ne ".") and ($dat_name ne "..")){
        push(@verzeichnisse,"$searchdir$dat_name");
        &filename("$searchdir$dat_name/");
      }
    }
    else{
      $dat_name_new = $dat_name;
      # Liste "sonderzeichen.txt" veraebeiten
      for(keys %from_to){
          $dat_name_new =~ s/$_/$from_to{$_}/g;
      }
      $dat_name_new =~ s/[^A-Za-z0-9_\.]/_/g;
      $copy = `copy $searchdir$dat_name $searchdir$dat_name.ren`;
      print "\nCopy: $copy\n";
      rename("$searchdir$dat_name","$searchdir$dat_name_new");
      print "Umbenennung $dat_name -> $dat_name_new";
    }
  }
}
1;
 

Anhänge

  • sonderzeichen.txt
    86 Bytes · Aufrufe: 6
Zuletzt bearbeitet:
Hi, Leute!
Das Script hat leider eine kritische Schwachstelle, denn wenn die Dateinamen eingelesen werden, liest er bei mir nicht "Ö" sondern "Ã". Ich habe versucht das auszugeichen indem ich in die Tabelle statt dem "Ö" "Ã" eingetragen habe, aber leider wird dieses Zeichen auch für "Ü" verwendet. Habt ihr eine Idee?
 

Ähnliche Themen

Verzeichnis mit 1200 Dateien auf Verweise in Textdateien checken

Zeilen auslesen und anderer Stelle wieder einfügen

Umlaute Filtern

Shell Skript beschleunigen

HandbrakeCLI Shell Skript

Zurück
Oben