1

按照向现有源文件添加标头(版权)信息中的说明,我需要将版权标头添加到我们要发送到建筑物外的一堆源文件中。(我知道,我也讨厌版权标题,但这是我们发布专有源文件时的政策。请考虑“说服某人放弃该政策”无益且不回答问题。)

我有所有文件的两个副本(在dir和中dir.orig),并且在 中dir.orig,我正在使用

find . -name \*.cs -exec sh -c "mv '{}' tmp && cp ../header.txt '../dir/{}'
  && cat tmp >> '../dir/{}' && rm tmp" \;

这是可行的,但它以标题结尾,然后是原始源文件中的BOM,而我更希望 BOM 移动到开头或被删除。

(看着这个,我意识到将文件移动到tmp是不必要的,因为我没有覆盖原始文件,但我没有费心从另一个 SO 问题的示例中删除它。)

如何删除(或移动)BOM 以使其最终不会立即出现在新添加的标题之后?

4

1 回答 1

1

我想我可能已经找到了我的解决方案,这要归功于Steven R. Loomis在相关问题上uconv回答

如果我使用

find . -name *.cs -exec sh -c "cp ../header.txt '../dir/{}'
  && uconv --remove-signature -f UTF-8 -t UTF-8 '{}' >> '../dir/{}'" \;

, 然后uconv假设输入 ( -f) 和输出 ( -t) 编码都应该是 UTF-8,但--remove-signature会导致它删除它找到的任何 BOM。

于 2012-02-06T13:14:50.693 回答