命令"find",在 Mac OS X 中操作程序'>'后无法使用'{}'



我将把一些文件的编码从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

最新更新