我将把一些文件的编码从GBK转换为UTF-8。
在Linux中运行以下命令是可以的:
find Bnf -type f -exec iconv -f GBK -t UTF-8 {} -o utf8/{} ;
但在MacOSX中,iconv没有-o选项,所有输出都会进入stdout。
因此,我将命令更改为:
find Bnf -type f -exec iconv -f GBK -t UTF-8 {} > utf8/{} ;
但是最后一个"{}"没有被文件的路径替换,而是保留为文字。
也许我可以创建一个bash脚本来包装iconv和运算符'>',但有更好的方法让它工作吗?
谢谢。
您最好在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