Как искать и заменять текст во всех php-файлах в каталоге и в его подкаталогах

Я ищу сценарий оболочки, который рекурсивно проходит все .php файлы в каталоге и выполняет поиск и замену определенного текстового шаблона.

Шаблон поиска довольно длинный (> 5000 символов), поэтому его можно сохранить в другом текстовом файле для удобства. Также он содержит символы косой черты.

редактирование: я думаю, я понял первую часть:

 find . -name "*.php" 

но тогда как я могу найти и заменить в этих файлах?

3 Solutions collect form web for “Как искать и заменять текст во всех php-файлах в каталоге и в его подкаталогах”

Это можно сделать легко с хорошей комбинацией sed и xargs.

 find . -name "*.php" | xargs -n 1 echo 

покажет вам силу xargs.

После этого в файле примера вы можете протестировать регулярное выражение, с заменой inplace (-i) или с помощью резервного копирования (-i.bak). Вы также можете использовать другой символ для замены «/», если у вашего шаблона / замены уже есть один.

В конце он должен выглядеть так:

 pattern=`cat /path/to/pattern`; replacement=`cat /path/to/replacement` find . -name "*.php" | xargs -n 1 sed -i -e 's|$pattern|$replacement|g' 

Пытаться:

 find . -name "*.php" -exec sed -i "s/$pattern/$replacement/g" {} \; 

где pattern – это шаблон для поиска и replacement это текст, который нужно заменить.

Параметр -i для sed редактирует файлы «на месте». Если вы хотите создать резервную копию файла перед его редактированием, используйте -i'.bak' .

 perl -p -i -e 's/originalString/targetString/g' `find . -name '*' -type f` 
  • Сценарий для поиска среды рабочего стола по умолчанию?
  • Команда работает в командной строке, но не работает в сценарии оболочки
  • Поиск и замена с помощью sed
  • Как передать содержимое файла параметру / параметру функции
  • Как избежать пробелов и т. Д. В переданной переменной, для системного вызова cp в awk
  • для цикла, не работающего для нескольких строк
  • Как получить числа, используя регулярное выражение, но только последнее
  • Как проверить shellshock против удаленной машины, используя простой скрипт
  • Как получить IP-адрес с помощью сценария оболочки?
  • «Дружественные» имена цветов терминала в сценариях оболочки?
  • Двоичные в шестнадцатеричные и десятичные в сценарии оболочки
  • Петля для snmpwalk в bash
  • Linux и Unix - лучшая ОС в мире.