ファイルの一括文字コード変換

数百数千あるファイルを一括文字コード変換したい時に使うコマンド。(私はzen-cart-v1.3.0.2-l10n-jp-6がEUC-JPであることが気に入らなくてUTF-8に一括変換
find . -type f | xargs -n 10 nkf -w --overwrite
find でカレントディレクトリ内のファイルをすべて拾って(-type f)、そのファイルリストをxargsに渡します。-n 10のところでファイルリストを一度に渡す数を調整します。膨大な量が予想される場合は-n 50とかにするとよいです。それからnkfに渡して-wでutf-8に文字コード変換。変換後はそのまま上書きしてしまって--overwriteしてしまいます。殆ど失敗しないので大丈夫。(ですが、コピーしておいた方がいいかもです。)

オプション 意味
-e EUC に変換
-s SJIS に変換
-w UTF-8 に変換
-j JIS に変換
-Lu UNIX 改行コード (LF) へ変換
-Lw Windows 改行コード (CR+LF) へ変換
-Lm (Macintosh 改行コード (CR) へ変換)
--overwrite ファイルを上書き

-Lmは殆ど使わない。-wLuが一番よく使う感じでしょうか。

文字コードの変換後は、nkfでもってきちんと文字コード変換できたか確認します。(結構ちゃんとできてる。)ちなみに英数字のみのファイルはASCIIとなってしまうのでご注意。日本語が混じっているファイルで確認してください。
nkf -g xxxx.php (または、nkf --guess xxxx.php)
とかこんな感じです。

nkfの基本的な使い方集

nkf -w test_sjis.csv > test_utf8.csv  # SHIFT JISのCSVをUTF-8に変換する(改行コード変換なし)
nkf -wLu test_sjis.csv > test_utf8.csv  # SHIFT JISのCSVをUTF-8に変換する(改行コードもLFに変換)
nkf -s test_utf8.csv > test_sjis.csv  # UTF-8のCSVをSHIFT JISに変換する(改行コード変換なし)
nkf -sLw test_utf8.csv > test_sjis.csv  # UTF-8のCSVをSHIFT JISに変換する(改行コードもCRLFに変換)
WindowsのエクセルなどからCSVを作成した時の改行コードはCR+LFなのだけど、MAC OSXのエクセルでCSVを作成するとCRになりました。なんかよくわからないので、UTF8の時はLFでSHIFT_JISのときはCRLFで統一する感じでいいのではと。