Задача: найти все файлы содержащие OLDTEXT, и заменить OLDTEXT на NEWTEXT.
UPD2:Решение, предложенное ocehb:
grep -rl OLDTEXT . | grep -Ev '(~|.o|.a)$' | grep -Ev '/.svn/' | xargs perl -i -pe "s/OLD_TEXT/NEW_TEXT/g;"
UPD1:Вариант без vim:
grep -HR OLDTEXT ./ | awk '{print $1}' | sed 's/:.*$//' | grep -v '~' | sort | uniq | xargs perl -i -pe "s/OLD_TEXT/NEW_TEXT/g;"
Изначально предложенное решение с vim:
grep -HR OLDTEXT ./ | awk '{print $1}' | sed 's/:.*$//' | grep -v '~' | sort | uniq | xargs vim -p
В открывшемся окне vim
командуем:
:tabdo %s/OLDTEXT/NEWTEXT/g
(заменить OLDTEXT на NEWTEXT во всех вкладках)
:xa
(записать изменения во всех вкладках)
либо
:qa!
(отменить изменения во всех вкладках)
Ссылки по теме: