Tuesday, April 28, 2009

Linux convmv: ファイル名の文字コードを変換する

convmv: ファイル名の文字コードを変換するLinux
以前、「ファイルの中身」の文字コードを変換する方法は紹介しましたが、稀に「ファイル名」の文字コードも変換したいことがあります。
これがローカルHDDのFAT領域にあるファイルだった場合は、FATのマウントオプションを変更すれば良いだけなのですが、ネットワーク経由で受け取ったファイルなど、そういうわけにはいかない場合も多いと思います。
このような時に便利なのは convmv コマンドです。
convmv が標準でインストールされるようなディストリビューションは無いと思いますが、オプションのパッケージとして準備されていることが多いです。Fedoraの場合、同名のパッケージがあるので以下のようにしてインストールします。
# yum install convmv
変換は iconv と似ていて*1、変換元の文字コードと変換後の文字コードを指定します。
$ convmv -f SHIFT_JIS -t UTF-8 ./*.txt(ファイル名がSHIFT_JISの ./*.txt を全て UTF-8 のファイル名にする)
$ convmv -r -f SHIFT_JIS -t UTF-8 testdir/(testdirの中身を全て再帰的に(-r)変換する)
ただし、これは危険なコマンドなので、いきなり実行されることはありません。上記のようにコマンドを打つと、「変換したらこうなります」という候補が表示されるだけです。 その表示を見て、それで問題が無いなら、今打ったコマンドに --notest オプションを付けて再度実行すれば、実際の変換が行なわれます。 もしくは、-iを始めから付けておけば、インタラクティブモードになり、実際に変換するかどうかの問い合わせが表示されます。
ちなみに、convmv にはおまけとして、URLエンコードされたファイル名をアンエスケープしたり、ファイル名の大文字小文字を揃えたりする変換機能も付いています。
$ convmv --unescape URL%20encoded%20file(URL%20encoded%20file を URL encoded file に変換)
$ convmv --upper Test_File$ convmv --lower Test_File(それぞれ、TEST_FILE や test_file に変換)
いずれも地味に便利な機能なので、convmv は、インストールしておいて損は無いプログラムでしょう

Firerbirdインストール時の注意

①FedoraCore6 で Firebird インストール時libstdc++.so.5エラー対処 libstdc++.so.5.0.7を他サーバーよりコピー/usr/lib/libstdc++.so.6 がは入っているのでlibstdc++.so.5.0.7をコピー追加してlibstdc++.so.5 でリンクを貼ってFirebird インストール 
Firerbirdバージョン1.5については TarコマンドよりインストールSYSDBAのパスワードを手入力すること PRMインストールはパスワードをはじかれます
Firerbirdバージョン1.5PRMインストールは ランダムにパスワードを作成するためrpm からインストールした場合、初期パスワードはランダムで設定されるようだが... /opt/firebird/SYSDBA.password ファイルに初期パスワードが書いてある。rpm からインストールした場合、sysdba パスワードは以下のスクリプトから行なった方がいいようだ。
先に必ず①を行っていること②[root@localhost ~]# CD /opt/firebird/bin/./changeDBAPassword.sh(enter)Please enter current password for SYSDBA user: (初期パスワード)Please enter new password for SYSDBA user: (新しいパスワード)GSEC> Warning - maximum 8 significant bytes of password usedGSEC>