使用 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)
不是 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)