ubuntuusers.de

Skript zum Umbenennen von Dateien mit Wide-Zeichen

Status: Gelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

paraplasma

Anmeldungsdatum:
7. August 2010

Beiträge: 341

Wohnort: Ruhrpott NRW

Hallo!

Ich habe ein Problem mit der Kodierung von Dokumenten und Bilddateien einer älteren Daten CD.

Ich bekomme manche dieser Dateien nicht kopiert, aufgrund der Fehlermeldung:

Fehler beim kopieren, ungültige Kodierung: Ungültiges oder unvollständiges Multi-Byte- oder Wide-Zeichen

Es handelt sich um sehr viele, (knapp 5000) kleine Textdokumente, Ordner, Bilder usw.

Diese Daten haben im Dateinamen ein schwarzes Fragezeichen. (Siehe Bild im Anhang)

Es handelt sich meistens um ä,ü,ö oder ß, die im Dateinamen durch ein Fragezeichen ersetzt

wurden. Ersetze ich das Fragezeichen mit einem andern Buchstaben, kann ich das Dokument

problemlos kopieren.

Alle Daten jetzt aber von Hand zu ändern würde sehr viel Zeit in Anspruch nehmen.

Ich habe schon ein Backup Skript geschrieben. Allerdings ist das für mich noch ziemliches Neuland.

Ich würde mir gerne ein Skript schreiben was die Fragezeichen im Dateinamen automatisch mit

einem beliebigen Buchstaben ersetzt.

Wie müsste ich bei so einem Skript vorgehen?

Vielen Dank für jede Hilfestellung!

Bilder

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11260

Wohnort: München

Es gibt Programme, die einem dabei helfen den Zeichensatz von Dateinamen zu korrigieren - z.B. für die Shell convmv und mit GUI H2rename.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

Bei einem Datenträger mit vfat-Filesystem und ähnlichem kann man mit iocharset=... steuern, welcher Zeichensatz angenommen werden soll, der beim Erstellen zum Tragen kann - ich glaube zu mindest, dass es das ist, womit mit dann Problem löst. Ich hatte es nicht oft und es ist ewig her.

Aus man mount:

1
2
3
       iocharset=value
              Character set to use for converting between 8 bit characters and 16  bit  Unicode  characters.   The  default  is
              iso8859-1.  Long filenames are stored on disk in Unicode format.

Also unmounten und von Hand mount probieren, ich denke in unseren Breiten war iocharset=iso8859-15 verbreitet. Was sonst in Frage kommt weiß ich jetzt nicht, aber vielleicht hilft das bei der Suche weiter.

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5814

Wohnort: Ankh-Morpork

Welches Character Set aktuell genutzt ist kannst du herausfinden indem du das mount-Kommando ohne weitere Optionen aufrufst. Das sähe dann z.B. so aus:

$ mount
[...]
/dev/sr0 on /media/NAME_DER_CD type iso9660 (ro,nosuid,nodev,uhelper=udisks,uid=1000,
gid=1000,iocharset=utf8,mode=0400,dmode=0500)

Hier würde also UTF-8 genutzt. Willst du also einmal iso8859-1 probieren musst du mount mit den entsprechenden Optionen und Root-Rechten aufrufen:

sudo mount -o remount,iocharset=iso8859-1 /media/NAME_DER_CD

Damit sollte die CD dann mit dem anderen Buchstabensatz eingebunden sein (Eventuell musst du auch weitere Optionen von oben mit angeben).

paraplasma

(Themenstarter)

Anmeldungsdatum:
7. August 2010

Beiträge: 341

Wohnort: Ruhrpott NRW

Vielen Dank für die schnellen Antworten! 👍

Die Daten befanden sich auf einer DVD-RW. Ich habe sie vor ca. einem Monat auf meinen Desktop kopiert.

Dabei gab es keine Fehlermeldung! Als ich diese Daten jetzt auf mein NAS verschieben wollte kam dann die oben genannte Fehlermeldung.

Leider habe ich die DVD-RW inzwischen für ein anderes Ubuntu.iso benutzt. 🙄

Also versuche ich es mal mit "convmv".

Ich melde mich dann noch einmal.

paraplasma

(Themenstarter)

Anmeldungsdatum:
7. August 2010

Beiträge: 341

Wohnort: Ruhrpott NRW

Hier die Lösung von meinem Dateinamen-Problem.

Der Befehl, der die Dateinamen richtig korrigiert hat, war dieser:

convmv -r -f iso-8859-15 -t utf-8 --notest /pfad/zum/Ordner
Antworten |