わっとブログ

WEB技術,その他雑多記事など

Linuxで、複数ファイルの文字コードを一括変換

古ーいシステムがすべてShift-JISでエンコードされていてエライことになっていたため、文字コードを一括変換します。

参考にしたサイト
http://masaoo.blogspot.jp/2009/02/find-nkf-xargs.html

以下は、カレントディレクトリ以下の全ファイルを UTF-8 に変換する場合

find . -type f | xargs nkf -w --overwrite

findで抽出した結果を、xargs引数として渡し、nkf文字コード変換をします。
nkfのオプションは、代表的なもので以下のものがあります。

-j : JISコードを出力
-e : EUCコードを出力
-s : Shift-JISコードを出力
-w : UTF-8コードを出力(BOM無し)
-g : 自動判別の結果を表示
--overwrite : 引数のファイルに上書

今回は、UTF-8エンコードし、引数のファイルを上書きしています。なお、文字コードを何も指定しない場合はデフォルトでJISになるようです。

findの検索条件を変えれば、当然、

find -name '*.rb' | xargs nkf -w --overwrite

などとして、ある特定の条件に絞ったファイルも指定出来ます。

便利ですね。