我要将一些文件的编码从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/{} \;
但是最后一个'{}'并没有被文件路径取代,而是留下了文字。
也许我可以创建一个bash脚本来包装iconv和运算符'>',但有没有更好的方法让它工作?
感谢。
答案 0 :(得分: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