ocehb: (Default)
ocehb ([personal profile] ocehb) wrote2011-06-23 03:55 pm
Entry tags:

"Поиск и замена текста на новый во многих файлах в unix"

отсюда


Команда найдёт все файлы в текущем каталоге и подкаталогах, содержащие OLD_TEXT и заменит строку "OLD_TEXT" на "NEW_TEXT":
grep -HR OLDTEXT ./ | awk '{print $1}' | sed 's/:.*$//' | grep -v '~' | sort | uniq | xargs perl -i -pe "s/OLD_TEXT/NEW_TEXT/g;"


мне кажется, что ужасно. мое решение:

grep -rl OLDTEXT . | xargs perl -i -pe "s/OLD_TEXT/NEW_TEXT/g;"


если хочется убрать ненужные файлы, то вставить grep -Ev '(~|.o|.a)$', по вкусу.

ps. а sed 's/:.*$//' эффективно прибъёт файлы с двоеточием в имени.

pps. gnu grep умеет -Z

[identity profile] alesk.livejournal.com 2011-06-23 01:52 pm (UTC)(link)
спасибо за красивое решение! обновил первоисточник.
avysk: (Default)

[personal profile] avysk 2011-06-23 09:01 pm (UTC)(link)
Баг. Показать? :-)