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