Lange Zeit hab ich diesen Schritt vor mir hergeschoben, aufgrund einer Hardwareneuanschaffung musste jetzt aber eine Lösung her.
Das Problem: Ein alter Server (Debian Sarge), der noch nicht UTF-8 als default locale gesetzt hatte, sondern iso-8859-15. Somit waren die deutschen Umlaute solange ok, solange man mit einem Terminal mit gesetzter iso-8859-15-Codepage ein ‚ls‘ auf die betroffenen Dateien ausführt, bzw. enstprechend zu einem anderen Frontend wandelt. Kopiert man die Daten mithilfe von scp, nfs und co. auf einen anderen Host (neueren Datums) mit gesetzter UTF-8 locale, kommt nur noch Datensalat bei den Umlauten herum und schon das Öffnen oder Umbenennen der Dateien kann zum Problem werden (wenn man die kaputten Zeichen nicht richtig escape’d).
Hierfür gibt es aber schon seit geraumer Zeit das Tool ‚convmv‘. Es gab sogar seit 2008 keine Updates mehr, wodurch man wohl davon ausgehen kann, dass sie hinreichend stabil und fehlerfrei ist. Genau genommen ist das sogar nur ein Perl Skript, sodass es auch dann kein Problem sein sollte, wenn das Paket nicht in der Paketverwaltung der eigenen Distribution zu finden ist, dann lädt man es einfach hier herunter und entpackt das Archiv. Convmv kann nicht nur einzelne Dateien oder Ordner mit Dateien umwandeln, sondern ganze Dateibäume bis hin zu ganzen Dateisystemen – und das sogar ziemlich flott.
Auf dem Zielsystem (mit ‚kaputten‘ Umlauten) startet man das Tool, indem man Quell- und Ziellocale gleich mitangibt.
# convmv -f iso-8859-15 -t utf-8 *Starting a dry run without changes...mv "./Malvenbl�ten.tif" "./Malvenblüten.tif"mv "./Melissenbl�tter.tif" "./Melissenblätter.tif"mv "./M�rser aus Olivenholz bearbeitet.psd" "./Mörser aus Olivenholz bearbeitet.psd"mv "./M�rser aus Olivenholz.psd" "./Mörser aus Olivenholz.psd"No changes to your files done. Use --notest to finally rename the files.
Jetzt ist es an der Zeit zu checken, ob alle Umlaute korrekt konvertiert wurden, bevor man die Änderungen am produktiven Dateisystem durchführt. Die letzte Zeile der Ausgabe gibt den Hinweis, dass man erst explizit den –notest Parameter setzen muss, um das Programm „scharf“ zu schalten.
Dies ist übrigens kein Aprilscherz.