Вы можете использовать комбинацию find
, xargs
и sed
:
find ./ -type f -name "*.php" | xargs sed -i 's/\<oldfunction\>/newfunction/g'
У меня есть имя функции с ошибкой, и я хочу изменить его. Функция вызывается во многих местах проекта.
Как я могу сделать это с помощью команды Linux на SUSE ?
Вы можете использовать комбинацию find
, xargs
и sed
:
find ./ -type f -name "*.php" | xargs sed -i 's/\<oldfunction\>/newfunction/g'
Вариант с Perl :
find . -type f -name "*.php" -print0 | xargs -0 perl -pi.bak -e 's/oldfunction/newfunction/g'
Преимуществом этого является то, что Perl создаст файлы резервных копий (с .bak
расширением), так что если вы все испортили, вы можете вернуться.
(Параметр -print0
для поиска и -0
параметр для xargs необходимы только в том случае, если у вас есть файлы или каталоги с пробелами в них.)
Это то же самое, что и решение Джона Т:
find ./ -type f -name "*.php" -exec sed -i 's/\<oldfunction\>/newfunction/g' {} \;
Я обычно не к xargs
РЕДАКТИРОВАТЬ: дороже .... по комментариям ниже.
Дополнение к другим очень хорошим предложениям, уже опубликованным: сделайте резервную копию всего сайта (cp -r / var / www / var / wold) и сделайте там редактирование. Лично я бы переместил измененные файлы, например, в / var / www / changes и протестировал http: //www.sitename.tld/changed, чтобы убедиться, что все сценарии работают, прежде чем начать работу.