3

У меня есть имя функции с ошибкой, и я хочу изменить его. Функция вызывается во многих местах проекта.

Как я могу сделать это с помощью команды Linux на SUSE?

4 ответа4

4

Вы можете использовать комбинацию find , xargs и sed:

find ./ -type f -name "*.php" | xargs sed -i 's/\<oldfunction\>/newfunction/g'
2

Вариант с Perl:

find . -type f -name "*.php" -print0 | xargs -0 perl -pi.bak -e 's/oldfunction/newfunction/g'

Преимущество этого состоит в том, что Perl создаст файлы резервных копий (с расширением .bak ), так что если вы все испортите, вы сможете вернуться.

(Параметр -print0 для поиска и параметр -0 для xargs необходимы, только если у вас есть файлы или каталоги с пробелами в них.)

1

Это то же самое, что и решение Джона Т:

find ./ -type f -name "*.php" -exec sed -i 's/\<oldfunction\>/newfunction/g' {} \;

Я обычно не обращаюсь к xargs

РЕДАКТИРОВАТЬ: дороже .... по комментариям ниже.

0

Дополнение к другим очень хорошим предложениям, уже опубликованным: сделайте резервную копию всего сайта (cp -r /var /www /var /wold) и сделайте там редактирование. Лично я бы переместил измененные файлы, например, в /var /www / changes и протестировал http: //www.sitename.tld/changed, чтобы убедиться, что все сценарии работают, прежде чем начать работу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .