0

一部のファイルのエンコーディングをGBKからUTF-8に変換します。

Linuxで次のコマンドを実行しても問題ありません。

find Bnf -type f -exec iconv -f GBK -t UTF-8 {} -o utf8/{} \;

ただし、Mac OS Xでは、iconvに-oオプションがなく、すべての出力がstdoutに送られます。

そこで、コマンドを次のように変更しました。

find Bnf -type f -exec iconv -f GBK -t UTF-8 {} > utf8/{} \;

ただし、最後の'{}'はファイルのパスに置き換えられず、文字通りに残されました。

iconvと演算子'>'をラップするbashスクリプトを作成できるかもしれませんが、それを機能させるためのより良い方法はありますか?

ありがとう。

4

1 に答える 1

2

find の外部で iconv を実行することをお勧めします。おそらく、basename を実行する必要があります。

find Bnf -type f |\
while read line; do
  FILE=`basename $line`
  iconv -f GBK -t UTF-8 $line > utf8/$FILE
done

そして、ディレクトリ構造を維持したい場合

find Bnf -type f |\
while read line; do
  mkdir -p utf8/`dirname $line` 2> /dev/null
  iconv -f GBK -t UTF-8 $line > utf8/$line
done
于 2011-06-22T04:38:17.583 に答える