У меня есть пункт об авторских правах, который я хочу добавить в начало группы файлов в каталоге в качестве комментария (C #).Это выглядит следующим образом:
/*COPYRIGHTCOPYRIGHTCOPYRIGHTCOPYRIGHTCOPYRIGHTCOPYRIGHTCOPYRIGHT*/
/*C Use, duplication, or disclosure of this software and T*/
/*C related documentation is blah blah blah blah T*/
/*C Copyright 2004 - 2018 COMPANY T*/
/*C All rights reserved. T*/
/*COPYRIGHTCOPYRIGHTCOPYRIGHTCOPYRIGHTCOPYRIGHTCOPYRIGHTCOPYRIGHT*/
Некоторые файлы уже содержат предложение, но с датой 2017 или 2016 г. я хочу убедиться, что дата в предложении установлена на 2018. И еслинет никакого пункта, я хочу вставить один.
До сих пор я реализовал find
для изменения только тех файлов, которые мне нужны в каталоге:
find . -type d \( -name ThirdParty -o -name 3rdParty -o -name 3rd_party \) -prune -o -type f \( -name "*.java" -o -name "*.cs" -o -name "*.cpp" -o -name "*.cxx" -o -name "*.cc" -o -name "*.c" -o -name "*.h" -o -name "*.scala" -o -name "*.css" -o -name "*.js" \) -print0
Поскольку этот пункт должен быть комментарием вверху каждого файла, онначинается и заканчивается /*...*/
.Я пытался использовать sed
, но это сложно, поскольку косые черты и звездочки используются для других вещей в sed
.Вот мои find
и sed
вместе взятые.Это заменяет все экземпляры 2017 года на 2018 и добавляет пункт, но добавляет его, даже если он уже существует.Мне нужно только добавить его, если его там нет.
find ....... -print0 | xargs -0 sed -i 's/2004 - 2017/2004 - 2018/g; 1s/^/\/*COPYRIGHTCOPYRIGHTCOPYRIGHTCOPYRIGHTCOPYRIGHTCOPYRIGHTCOPYRIGHT*\/\n\/*C Use, duplication, or disclosure of this software and.....etc'
Есть ли лучший способ сделать это в grep или sed?Спасибо ИЗМЕНИТЬ: Я ИСПОЛЬЗУЮ CYGWIN