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

Linux系OSのfedora6のデフォルト文字コードはUTF8なので、先日久々に参照したEUCのC++ソースコード中のコメントや出力が文字化けしていました。

そこで、ファイルの文字コードをEUCからUTF8に変換するコマンドを調べたところ、PHPプロ!TIPS+のページの中程にそれに関するコマンドがあったので参考にしました。

$find -name '*.cc' | xargs nkf --overwrite -w

↑は拡張子がccの全てのテキストファイルの文字コードをutf8に変換します。

$find . -type f -print0 | xargs -0 nkf --overwrite -w -Lu

↑このコマンドの意味を簡単に示しますと、まずファイルを検索するfindコマンドで、カレントディレクトリ「.」から通常ファイル「-type f」を探索し出力します「-print0」(常に真)。

% find [検索開始ディレクトリ] (option)
参考:UNIXコマンド [find]

ここで、findコマンドの結果をパイプ「|」をもって渡し、そこでxargsでコマンドを実行します。ここでxargsは以下の機能を持ちます。

xargs[えっくす・あーぐす]
標準入力から引数を読み込み、指定のコマンドを実行するコマンド
参考:UNIXの部屋 検索:xargs (*BSD/Linux/Solaris)

文字コード変換コマンドである nkf のオプション–overwriteは変換した文字コードのデータを元のファイルに上書きするもので、-wが文字コードをUTF8に指定するものです。ちなみに、EUCに変換したい場合は-e、Windowsで使われているSJISにする場合は-sを代わりに指定します。

最後の-Luオプションは改行コードをLFに指定するものです。

コメント

  1. 愛宕翔太 より:

    Linuxコマンドで複数ファイルの文字コードを一括変換 http://www.yukun.info/blog/2008/01/euc-to-utf8.html

  2. Linuxコマンドで複数ファイルの文字コードを一括変換 | Yukun’s Blog | Nunocky's blog より:

    […] 引用元: Linuxコマンドで複数ファイルの文字コードを一括変換 | Yukun’s Blog. […]

  3. カレントディレクトリのファイルをUTF-8に上書きする | Hack より:

    […] http://www.yukun.info/blog/euc-to-utf8/ http://qiita.com/ikemonn/items/a418658b37955a3c543d […]

  4. 【Linux】ファイル文字コード変換 | WordPressの勉強 より:

    […] Linuxコマンドで複数ファイルの文字コードを一括変換 […]