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

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

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

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

 find . -name "*.php" 

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

  • Невозможно войти в centOS с любым пользователем
  • распаковать вложенные .zip-файлы по сценарию оболочки
  • эхо в файл с другим пользовательским разрешением
  • Как правильно опросить существование фонового сценария
  • Как передать переменную в скрипте через терминал при выполнении abc.sh
  • Как извлечь строку из имени файла?
  • Усреднение по многим строкам данных
  • Как выбрать самый старый файл в папке из каталога
  • 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` 
    Interesting Posts

    Запуск сценария при выходе из рабочего пространства i3

    Компиляция драйвера для RNX-MiniN2 на ядре 3.X

    Почему в этом примере происходит расширение параметра до расширения фигурной скобки?

    Примечание и определение с помощью Vi: при запуске выделите теги и теги отображения в окне предварительного просмотра

    привязка ключевых ссылок к функциям оболочки в zsh

    Не удалось найти пакет `docker-ce` на 64-битной ubuntu

    Не удается ssh из Интернета, но может с localhost

    Удалить все слова, окруженные круглыми скобками, с помощью sed

    Windows 8.1 не появляется на grub после Linux Mint 16

    Старое программное обеспечение в диспетчере пакетов Synaptic

    Как добавить каждый элемент в список с помощью цикла?

    Как обновить OpenSSL до 1.0.1h

    Как я могу сделать тип прерывания вывода файла и кодировку для всех типов файлов?

    «Система сейчас идет на перезагрузку»

    с помощью многоадресной рассылки IPv6 для форматирования файла

    Linux и Unix - лучшая ОС в мире.