为什么用于删除BOM的命令不起作用?

时间:2015-12-10 19:26:08

标签: macos unicode utf-8 character-encoding byte-order-mark

我找到了一个命令在我的所有级文件夹和目录中查找带有BOM的utf-8的文档,然后删除BOM 。但它似乎无法在我的计算机上运行(osx)...我应该首先在我的机器上安装moodle,以便在我的命令行中运行吗?

以下是命令:

find . -type f -exec sed 's/^\xEF\xBB\xBF//' -i.bak {} \; -exec rm {}.bak \;

我得到的结果是sed: -i.bak: No such file or directory以及文件中的所有内容,这看起来很奇怪。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您找到的命令是GNU的sed,它支持任何地方的可选参数。最糟糕的是,OS X的sed似乎不支持非ASCII字节序列。

相反,对于OS X,请使用以下答案,该答案使用Perl:https://stackoverflow.com/a/9101056/1554386

将其绑定到find中如下:

find . -type f -exec perl -e 's/\xef\xbb\xbf//;' -pi.bak {} \;

如果您愿意,可以从命令中添加-exec rm {}.bak \;,但您可以轻松地单独执行此操作