- 161 名前:login:Penguin mailto:sage [2007/09/17(月) 04:16:34 ID:nqz563FT]
- convmv -r -f sjis -t utf-8 * --notest
で、再帰的にカレントディレクトリ以下のファイル、ディレクトリ全てに対して sjisからutf-8に変換をかけるコマンドを打ったのですが、sjisとeuc-jpが混在していて convmvの仕様だと 1ファイルでも -f で指定した文字コード以外の文字コードのファイルが 存在した場合はそこで全ての変換処理が実行されなくなってしまいます。 違う文字コードの場合は除外して残りを全て処理してくれるオプションは無いかとman convmv を読んで見ましたが、無いようです。 仕方が無いので、これをシェルスクリプトで実現したいと思います。 実際にやりたいコマンドは convmv -r -f sjis -t utf-8 /data/* --notest で、これで変換できないファイルは convmv -r -f euc-jp -t utf-8 /data/* --notest で、全てのeuc-jpとsjisをutf-8にする事です。 for TARG in `find /data | nkf -w8` do convmv -f sjis -t utf-8 ${TARG} --notest convmv -f euc-jp -t utf-8 ${TARG} --notest done これで、sjisのファイルだろうがeuc-jpのファイルだろうが必ずutf-8になると思われますが いけると思いますか? | nkf -w8 をかませているのは、こうしないとターミナルで見た限りだと 文字化けしたファイル名でそのまま表示されるので、これだと多分ファイルにアクセスできないだろう との配慮から、ちゃんとしたファイル名で見えるようにしたつもりです。
|

|