arto (ocehb) wrote,
arto
ocehb

Category:

"Поиск и замена текста на новый во многих файлах в 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
Tags: shell
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 10 comments