我正在尝试使用regex命令替换所有php文件中的路径,但它没有按预期工作!
我想将'/home/example/public_html
替换为$_SERVER['DOCUMENT_ROOT'] . '
我在ssh中使用以下命令:
find /var/www/advertise/ -name '*.php' -type f -exec sed -i 's/\'\/home\/example\/public_html/\$\_SERVER\[\'DOCUMENT\_ROOT\'\]\ \.\ \'/g' {} \;
当我输入命令并点击返回时,>
符号如下:
>
>
> ..等等,因为我一直按回执行命令。
以下命令的位置完美(将home/example/public_html
替换为var/www
):
find /var/www/advertise/ -name '*.php' -type f -exec sed -i 's/home\/example\/public_html/var\/www/g' {} \;
答案 0 :(得分:1)
你搞砸了报价。
/
以外的分隔符,以便您无需转义/
'
,因此最好使用"s#..#..#"
(即双引号)。但是,您需要在替换中转义$
以防止shell尝试扩展。以下内容可能适合您:
find /var/www/advertise/ -name '*.php' -type f -exec sed -i "s#'/home/example/public_html#\$_SERVER['DOCUMENT_ROOT'] . '#g" {} \;