【问题标题】:Trying to cat a header into source files but a Unicode BOM is getting in the way试图将标头添加到源文件中,但 Unicode BOM 妨碍了
【发布时间】:2012-02-27 21:12:44
【问题描述】:

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

我有所有文件的两个副本(在dirdir.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,这样我最终不会在新添加的标题之后立即出现它?

【问题讨论】:

    标签: header byte-order-mark cat


    【解决方案1】:

    我想我可能已经找到了我的解决方案,这要归功于在相关问题上被 this answerSteven 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。

    【讨论】:

      猜你喜欢
      • 2014-11-17
      • 2015-05-08
      • 2011-03-08
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 2014-10-30
      • 1970-01-01
      相关资源
      最近更新 更多