如何在 Linux 上递归地在所有 PHP 文件中进行字符串替换?

如何在 Linux 上递归地在所有 PHP 文件中进行字符串替换?

我有一个拼写错误的函数名,我想更改它。该项目的许多地方都调用了该函数。

我怎样才能使用 Linux 命令执行此操作苏西

答案1

您可以使用和的组合findxargssed

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选项参数仅当您的文件或目录中有空格时才需要。

答案3

这与 John T 的解决方案完全相同:

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

我通常不会xargs

编辑:更贵……根据下面的评论。

答案4

对已发布的其他非常好的建议的补充:备份整个网站(cp -r /var/www /var/wold)并在那里进行编辑。我个人会将修改后的文件移动到例如 /var/www/changed 下并进行测试http://www.sitename.tld/changed确保所有脚本在上线前都能正常运行。

相关内容