Dateien in UTF-8 Kodierung konvertieren

Diskutiere Dateien in UTF-8 Kodierung konvertieren im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; hallo, ich habe hier jetzt schon viel rum gestöbert, aber noch nichts dazu gefunden... ich habe ein Verzeichnis mit mehreren Dateien (text),...

  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

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    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. datei kodierung umwandeln

    ,
  2. datei coding in utf 8 ändern

    ,
  3. birt datei als utf-8 kodieren

    ,
  4. linux skript unter windows welche kodierung,
  5. bash speichern mit utf8,
  6. linux encoding konvertieren,
  7. kodierung konvertieren,
  8. perl konvertieren in utf-8
Die Seite wird geladen...

Dateien in UTF-8 Kodierung konvertieren - Ähnliche Themen

  1. mehrere Textdateien gleichzeitig öffnen.

    mehrere Textdateien gleichzeitig öffnen.: Hallo Es geht um das editieren mehrerer Textdateien gleichzeitig. Diese kann man natürlich in einem Texteditor öffnen. Mein Problem ist, dass die...
  2. Dateien nach Bestandteil im Namen verschieben

    Dateien nach Bestandteil im Namen verschieben: Hallo zusammen, es gibt ja schon einige Threads zum automatisierten Verschieben nach exif Datum etc. Ich versuche es einfacher anhand eines...
  3. Samba Dateien und Ordner verschieben

    Samba Dateien und Ordner verschieben: Moin, Ich verwende für mein Server OpenMediaVault (=Debian-System). Mein OMV hat kein Raid. Ich habe einen User "SMBadmin" angelegt. Bei...
  4. Dateien in Unix finden, die mehrere Strings beinhalten

    Dateien in Unix finden, die mehrere Strings beinhalten: Hallo liebe Leute, ich versuche über die Shell unter Unix alle Dateien ausfindig zu machen, die sowohl den SuchstringA als auch den SuchstringB...
  5. 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...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden