0

我打算将一些文件的编码从 GBK 转换为 UTF-8。

在 Linux 中运行以下命令是可以的:

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

但在 Mac OS X 中,iconv 没有 -o 选项,所有输出都到标准输出。

因此,我将命令更改为:

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

但是最后一个 '{}' 并没有被文件的路径替换,而是留下了文字。

也许我可以创建一个 bash 脚本来包装 iconv 和运算符'>',但是有更好的方法让它工作吗?

谢谢。

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 回答