Dateien in UTF-8 Kodierung konvertieren

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von lord-spam, 17.06.2007.

  1. #1 lord-spam, 17.06.2007
    lord-spam

    lord-spam Eroberer

    Dabei seit:
    03.12.2006
    Beiträge:
    73
    Zustimmungen:
    0
    Ort:
    Cuxhaven
    hallo,

    ich habe hier jetzt schon viel rum gestöbert, aber noch nichts dazu gefunden...

    ich habe ein Verzeichnis mit mehreren Dateien (text), die zum Teil verschiedene Kodierungen haben.

    Diese möchte ich nun alle in UTF-8 konvertieren.
    Mit file finde ich herraus wie sie Kodiert ist, und mit iconv kann ich es umwandeln, doch möchte ich dies automatisieren.

    Das Problem ist, das die Dateien verschiedene Kodierungen haben und ich nicht weiß wie ich es so lösen könnte.

    Habt ihr eine Idee wie man dies machen könnte?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 17.06.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Bau dir ein Skript mit Fallunterscheidung.
    e.g.
    Code:
    $ find ./ -type f -exec file {} \; |
    while read f code rest;
    do 
    case "$code" in 
    ASCII ) echo ${f/:/} ist ASCII;; 
    UTF-8) echo ${f/:/} ist UTF-8;;
     ISO-8859) echo ${f/:/} ist ISO-8859;;
    esac;
    done
    
    Nur als Gedankenanstoß.

    Gruß Wolfgang
     
  4. #3 lord-spam, 17.06.2007
    lord-spam

    lord-spam Eroberer

    Dabei seit:
    03.12.2006
    Beiträge:
    73
    Zustimmungen:
    0
    Ort:
    Cuxhaven
    danke :) das ist ein sehr guter Gedankenanstoß...
     
  5. #4 smg, 17.06.2007
    Zuletzt bearbeitet: 17.06.2007
    smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Hab mal nen kleines Script geschrieben, vielleicht interessiert dich es. Das macht einfach nur das: Es guckt was benutzt wird ASCII / UTF8 / ISO8859-* und wandelt es dann in utf8 um. Funktionieren tuts einigermaßen, habe leider grad keine Zeit da ich noch arbeiten muss -.- Vielleicht kriegst du in Eigeninitiative was besseres hin!

    Einfach nach /usr/local/bin oder sonstwo und chmod u+x script.sh.

    Code:
    #!/bin/bash
    # set -x
    [[ "$#" != 3 ]] && echo "Usage: $(basename $0) <ASCII|UTF-8|ISO-8859-*> <path> <pattern>" && exit 
    pfad=${2}
    pattern=${3}
    to=$(echo ${1} | tr '[[:upper:]]' '[[:lower:]]')
    files=$(find "$pfad" -iname "*$pattern*" -type f -print)
    
    function code() {
        count=0
        for f in ${files[*]}; do
            count=$(( $count + 1))
            type="$(file "$f" | sed 's/^.*:\s\(UTF-8\|ASCII\)\s.*/\1/' | tr '[[:upper:]]' '[[:lower:]]')"
            if [ "$type" = "$to" ]; then
                echo -n "$count: $f is already $to! => done."
            else
                case $type in
                    ASCII|ISO-8859-*|UTF-8|ascii|iso-8859-*|utf-8)
                    echo -n "$count: Recode now $f to $to!"
                    iconv -f "$type" -t "$to" "$f" > "${f}.${to}"
                    mv "${f}.${to}" "$f"
                    [[ $? = 0 ]] && echo -n " => done." || echo " => failed."
                    ;;
                    *)
                    echo -n "$count: $f has wrong type => failed."
                    ;;
                    esac && echo
            fi 
        done 
    }
    
    case $1 in
        ASCII|ISO-8859-*|ascii|iso-8859-*|UTF-8|utf-8)
            code $1;;
        *)
            exit;;
    esac
    stephan@unimatrix ~ $ ./mycode.sh
    Usage: mycode.sh <ASCII|UTF-8|ISO-8859-*> <path> <pattern>
     
  6. #5 lord-spam, 18.06.2007
    lord-spam

    lord-spam Eroberer

    Dabei seit:
    03.12.2006
    Beiträge:
    73
    Zustimmungen:
    0
    Ort:
    Cuxhaven
    smg:

    dein Script brachte mich noch weiter... ich hab mir auch eins zusammen gebastelt. Hab vorher noch nie wirklich mit Shell geschrieben.

    Nur kann ich jetzt von vorne anfangen. Meins war eigentlich für meine Bedürfnisse fertig, doch gab es noch nen Fehler. Leider lag das Script im selben Verzeichnis und wurde auch behandelt, so dumm wie ich bin hab ich es vorher nicht gesichert, und nun ist es leer >.<

    naja trotzdem danke... wenn ich es fertig habe werde ich es vllt. noch hier posten.
     
Thema: Dateien in UTF-8 Kodierung konvertieren
Besucher kamen mit folgenden Suchen
  1. kodierung konvertieren

    ,
  2. perl konvertieren in utf-8

Die Seite wird geladen...

Dateien in UTF-8 Kodierung konvertieren - Ähnliche Themen

  1. User sollen Dateien speichern und ändern, aber nicht neu anlegen dürfen

    User sollen Dateien speichern und ändern, aber nicht neu anlegen dürfen: Hallo liebe Helfer, welche Einstellungen muss ich in der smb.conf bzw. unter Linux vornehmen, damit User vorhandene Dateien öffnen und speichern...
  2. Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen

    Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen: Hallo, ich habe ein Verzeichnis, darin enthalten sind mehrere Dateien. Nun möchte ich alle Dateien (Parameter $1) gegen eine konstante Datei...
  3. Dateien selektieren und zählen

    Dateien selektieren und zählen: Hallo, das ist mein erster Beitrag, bitte entschuldigt, falls nicht alles richtig geschrieben ist. Ich muss meine erste Hausaufgabe als...
  4. Benötige Hilfe- Dateien vergleichen

    Benötige Hilfe- Dateien vergleichen: Hallo, für eine Arbeit an der Uni muss ich einige viele Bilder miteinander vergleichen, was ich gerne durch eine Automatisierung etwas...
  5. Amarok streikt bei *.m4a Dateien

    Amarok streikt bei *.m4a Dateien: Hallo zusammen, vor Kurzem habe ich einen neuen Rechner zusammengebaut und mit OpenSuse 13.2 aufgesetzt. Nun musste ich aber feststellen, dass...