Попытка поместить заголовок в исходные файлы, но мешает Unicode BOM - PullRequest
1 голос
/ 06 февраля 2012

Следуя инструкциям на Добавить заголовок (информацию об авторских правах) к существующим исходным файлам , мне нужно добавить заголовки авторских прав к пачке исходных файлов, которые мы отправляем из здания.(Я знаю, я тоже ненавижу заголовки авторских прав, но это политика, когда мы выпускаем проприетарные исходные файлы. Пожалуйста, рассмотрите "убедить кого-то отказаться от политики" как бесполезное и не отвечая на вопрос.)

У меня есть двакопии всех файлов (в 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 вопроса.)

Как я могу удалить (или переместить) спецификацию, чтобы яв конечном итоге он не появится сразу после вновь добавленного заголовка?

1 Ответ

1 голос
/ 06 февраля 2012

Я думаю, что, возможно, нашел свое решение, благодаря указанию 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 заставляет его удалить любую найденную спецификацию.

...