使用 sed 将旧学校 $PHP_SELF 全局替换为 $SERVER['PHP_SELF']

Globally Replace Old School $PHP_SELF with $SERVER['PHP_SELF'] using sed

不是 sed 专家,我需要在目录中全局替换字符串 $PHP_SELF 的所有实例为 $_SERVER['PHP_SELF']

这是一个 "old school" osCommerce 应用程序,我需要临时恢复它以进行展示。

sed 不会自行递归,因此您需要为此使用其他工具,find 通常是正确的答案。

运行这个在顶级目录。 sed 将使用 .bak 扩展名对其读取的每个文件进行备份(无论它是否实际进行了替换)。如果您不想要备份行为,请使用 -i 而不是 -i.bak

我建议您首先在测试目录上尝试此操作,以确保它符合预期。

#!/bin/bash

while IFS= read -r -d $'[=10=]' file; do
   sed -i.bak $'s/$PHP_SELF/$_SERVER[\'PHP_SELF\']/g' "$file"
done < <(find . -type f -name "*.php" -print0)