目次
はじめに
とある案件で、サーバー移転をすることになりました。
新しいサーバーのデフォルト文字コードが、旧サーバーから変わるとのことで、急遽すべてのファイル(HTML)の文字コードを変換する必要がでました。
手作業でも直せるのですが、10年近く運用していた為、カオスのようなディレクト構造となっており、ファイル数も1000個単位に存在していました。
さすがに白目を向きながら作業することになるので、コマンドで変換をする手段が無いか探してみたらありました。
シェルスクリプト
以下のシェルを使用すると、設置したディレクトリ内のすべてのHTMLファイルをUTF-8(-w)に変換して、置き換え(--overwrite)てくれます。
convert.sh
#!/bin/sh for file in `find ./ -name "*.html"`; do echo $file nkf -w --overwrite $file done exit
ちなみに他の文字コードに変換したい場合は以下を利用します。
-w | UTF-8 |
---|---|
-j | JIS |
-e | EUC |
-s | シフトJIS |
!/bin/sh: bad interpreter: そのようなファイルやディレクトリはありません (No such file or directory)
上記のエラーが発生した場合は、シェルの改行コードがCRLFになっていると思います。
これをLFに置き換えてやれば解決すると思います。
sed -i 's/\r//' convert.sh
さいごに
私はシェル芸に慣れてないので、もっと良いやり方があるのかもしれません。
今のところは、このシェルの書き方が限界です・・・
深夜のサーバー移転作業からのブログ更新でした。
今日はこの辺でー