Wie kann ich mehrere Dateien mithilfe von * nix-Befehlszeilentools in UTF-8-Codierung konvertieren? [Duplikat]


Antworten:


56

iconv konvertiert zwischen vielen Zeichenkodierungen. Fügen Sie also ein wenig Bash-Magie hinzu und wir können schreiben

for file in *.txt; do
    iconv -f ascii -t utf-8 "$file" -o "${file%.txt}.utf8.txt"
done

Dies wird iconv -f ascii -t utf-8für jede Datei ausgeführt, die auf endet .txt, und die neu codierte Datei wird an eine Datei mit demselben Namen gesendet , die jedoch auf .utf8.txtanstatt auf endet .txt.

Es ist nicht so, als würde dies tatsächlich irgendetwas mit Ihren Dateien bewirken (da ASCII eine Teilmenge von UTF-8 ist), sondern als Antwort auf Ihre Frage, wie Sie zwischen Codierungen konvertieren können.


2
Sie sollten die Variable $ i in Anführungszeichen setzen, um Dateinamen mit Leerzeichen zu behandeln.
Richard Hoskins

Es wird Dinge tun, es wird eine Stückliste für eine hinzufügen ...
Jason

Sind Sie sicher, dass iconv eine Stückliste hinzufügt? Ich hatte den Eindruck, dass es mit UTF-8 nicht gehen würde.
Richard Hoskins

5
Ich habe dies gerade mit iconv (GNU libiconv 1.11) getestet und es wurde keine Stückliste hinzugefügt. Ich verstehe, dass iconv nur dann eine Stückliste hinzufügt, wenn eine in der Eingabe vorhanden ist, was in ASCII nicht der Fall wäre. Stücklisten sind problematisch und bei UTF-8 nicht erforderlich.
Richard Hoskins

2
Wenn Ihre Version von iconv den Parameter -o nicht unterstützt, können Sie ihn direkt durch >> ersetzen, um die Shell-Umleitung zu verwenden.
Rob
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.