[terminal | ターミナル] 文字コード変換のシェルスクリプト

2012/02/8

こんにちは。きんくまです。

Terminalで文字コード変換のシェルスクリプトです。

同じフォルダにencodedというサブフォルダを作って、
そこに、変換後のファイルが保存されます。
今回は、SJIS から UTF-8に変換します。

sjisToUtf8

#!/bin/sh

mkdir encoded

for fname in "$@"
do
  iconv -f SJIS -t UTF-8 "$fname" > "encoded/$fname"
done

iconvが文字コード変換のコマンドです。
-f は from(変換前) -t は to (変換後)のオプションです。
man iconvと打つとマニュアルが出てくるので、調べてみると良いかもしれません。

さて、実行に向けての準備です。
例えば、今回はさきほどのテキストをsjisToUtf8という名前で保存しました。
どこに置いてもいいのですが、
/usr/local/bin
に置いておくと、いつでもコマンドを呼び出せるので便利です。
そこに置いたあと、実行権をつけておきます。

ファイルを移動(finder上でもOK)

mv sjisToUtf8 /usr/local/bin/

実行権をつける

chmod a+x /usr/local/bin/sjisToUtf8

ここで一度terminalをログアウトしてもう一回開くと、sjisToUtf8がコマンドとして認識されます。

で、ここから変換したいディレクトリに移動した後に、以下のコマンドを打つと
hello.cというファイルが./encoded/hello.cという名前でShiftJISからUTF8に変換されて保存されます。

sjisToUtf8 hello.c

複数ファイルも指定できます。
この場合は拡張子がcのファイルが全て変換されます。

sjisToUtf8 *.c

一度コマンドを実行すると、encodedフォルダができてしまうので、
再度コマンドを実行すると「そのフォルダはすでにありますぜ」という警告が出るのですが、
特に問題なさそうなので、無視しました、、。
encodedフォルダが存在するかどうかのif文を作らなきゃならないのですが、
どうやるかわかりません、、。すみません。

もし、他の文字コードを希望する場合はterminal上で
iconv -l
を打てば、文字コードリストが出るので、スクリプトの該当部分を変えれば大丈夫です。

terminalでこうしたちょっとしたツールが使えるのは便利ですね。

LINEで送る
Pocket

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

LINEスタンプ作りました!
毎日使える。とぼけたウサギ。LINEスタンプ販売中! 毎日使える。とぼけたウサギ

ページトップへ戻る