[CentOS]複数ファイルの文字コードを一括変換


昔書かれたJavaソースとかはShift-JISで書かれてたりしますよね
そんなファイルを一括でUTF-8にしたいと思ったことはありませんか?
ここでは、Linux上で、そのようなファイルを一発でUTF-8に変換する為の方法を記載します



使うコマンドたち

UTF-8に変換するコマンドはnkfを使います
nkfコマンドがない場合はYUMにてインストールしましょう

# yum install nkf

それから、nkfコマンドにパラメータを渡すxargsコマンドも使います
たぶんインストールされていると思うのですが、無い場合は同じくYUMでインストール

# yum install findutils

変換してみる

では、Shift-JISなファイル一式をUTF-8に変換してみます
が、万が一に備えバックアップをとっておいた方が無難です

変換したいファイルが入っているディレクトリにcdし、以下を実行します

# find . -type f -name "*.java" | xargs -n 10 nkf -w --overwrite

xragsに渡しているパラメータ “-n 10″は、nkfに渡すパラメータ(ファイル名)の最大個数です
変換対象となるファイルが多い場合はこのように最大個数を指定すると良いです

これで、ファイルがすべてUTF-8に変換されました
なお、例では入力ファイルのコード判定は自動になっています
Shift-JISと明確に指定したい場合は、nkfコマンドに “-S” オプションを追加すればよいでしょう