Архив рубрики «replace»

Unix: Поиск и замена во многих файлах одновременно

09.02.2009

Задача: найти все файлы содержащие OLDTEXT, и заменить OLDTEXT на NEWTEXT.

UPD2:Решение, предложенное ocehb:

  1. grep -rl OLDTEXT . | grep -Ev '(~|.o|.a)$' | grep -Ev '/.svn/' | xargs perl -i -pe "s/OLD_TEXT/NEW_TEXT/g;"

UPD1:Вариант без vim:

  1. grep -HR OLDTEXT ./ | awk '{print $1}' | sed 's/:.*$//' | grep -v '~' | sort | uniq | xargs perl -i -pe "s/OLD_TEXT/NEW_TEXT/g;"

Изначально предложенное решение с vim:

  1. grep -HR OLDTEXT ./ | awk '{print $1}' | sed 's/:.*$//' | grep -v '~' | sort | uniq | xargs vim -p

В открывшемся окне vim командуем:

  1. :tabdo %s/OLDTEXT/NEWTEXT/g

(заменить OLDTEXT на NEWTEXT во всех вкладках)

  1. :xa

(записать изменения во всех вкладках)
либо

  1. :qa!

(отменить изменения во всех вкладках)

Ссылки по теме:

  1. VIM FAQ
  2. Save all open buffers at once
  3. Сохранение файла без прав на запись в vim используя sudo
  4. [SLUG] Vim. Search and replace in multiple files