* nixコマンドラインツールを使用して複数のファイルをUTF-8エンコードに変換するにはどうすればよいですか?[複製]


46

重複の可能性:
エンコードまたは行末のためにファイルをバッチ変換する

任意の文字セットからUTF-8エンコーディングに変換したいテキストファイルがたくさんあります。

これを一括して行うために使用できるコマンドラインツールまたはPerl(または選択した言語)のライナーはありますか?

回答:


56

iconvは、多くの文字エンコード間で変換します。少しbashマジックを追加すると、次のように記述できます

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

これが実行されるiconv -f ascii -t utf-8で終わるすべてのファイルに.txt同じ名前のファイルに録画ファイルを送信するが、で終わる、.utf8.txt代わりに.txt

ASCIIがUTF-8のサブセットであるために、これが実際にファイルに何かをするようではありませんが、エンコーディング間の変換方法に関する質問に答えるためです。


2
スペースを含むファイル名を処理するには、var $ iを引用符で囲む必要があります。
リチャードホスキンズ

それは物事を行います、それは
つのための

iconvがBOMを追加してもよろしいですか?UTF-8ではそうではないという印象を受けました。
リチャード

5
これをiconv(GNU libiconv 1.11)でテストしたところ、BOMは追加されませんでした。iconvは、入力にBOMが存在する場合にのみBOMを追加することを理解していますが、これはASCIIではありません。BOMは問題があり、UTF-8では必要ありません。
リチャード

2
ご使用のiconvのバージョンが-oパラメーターをサポートしていない場合は、直接>>に置き換えてシェルリダイレクトを使用できます。
ロブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.