2009年2月21日土曜日

ファイルの文字コードを一括変換 (find, nkf, xargs)

あるディレクトリ以下の全ファイルの文字コードを一括変換したいことがあります。
そんなときは以下のコマンドで処理します。
(カレントディレクトリ以下の全ファイルを UTF-8 に変換する場合)

$ find . -type f | xargs -n 10 nkf -w --overwrite

まず、find で ファイルを抽出 (-type f)、
抽出した結果を xargs に引数として渡し、nkf で処理します。

xargs のオプション "-n 10" は、引数を 10 個ずつ渡すの意。
ファイル数が多い場合は、引数を渡しきれないので、追加します (ファイル数が少ない場合は不要)。

以下でも同じ結果が得られますが、xargs を使った方が処理は速いです。

$ find . -type f -exec nkf -w --overwrite {} \;

nkf のオプション

オプション意味
-eEUC に変換
-sSJIS に変換
-wUTF-8 に変換
-jJIS に変換
-LuUNIX 改行コード (LF) へ変換
-LwWindows 改行コード (CR+LF) へ変換
-Lm(Macintosh 改行コード (CR) へ変換)
--overwriteファイルを上書き

0 件のコメント: