使用查找和替换字符串中的斜杠递归地在文件夹中查找并替换为sed

使用查找和替换字符串中的斜杠递归地在文件夹中查找并替换为sed,sed,Sed,我想使用sed命令将/var/www替换为/home/lokesh/www: sed -i 's/\//var\//www/\//home\//lokesh\//www/g' lks.php 但这会产生一个错误: sed: couldn't open file ww/\//home\//lokesh\//www/g: No such file or directory 如果使用正斜杠作为sed的替换命令的分隔符,则需要在模式或替换中转义反斜杠: sed -i 's/\/var\/www\//

我想使用sed命令将/var/www替换为/home/lokesh/www:

sed -i 's/\//var\//www/\//home\//lokesh\//www/g' lks.php
但这会产生一个错误:

sed: couldn't open file ww/\//home\//lokesh\//www/g: No such file or directory

如果使用正斜杠作为sed的替换命令的分隔符,则需要在模式或替换中转义反斜杠:

sed -i 's/\/var\/www\//\/home\/lokesh\/www\//g' lks.php
但是Sed的替换命令可以使用任何字符作为分隔符。同样的命令可能更容易理解为:

sed -i 's:/var/www/:/home/lokesh/www/:g' lks.php
斜杠的常见替代方法包括冒号:、逗号和竖线|,但任何字符都可以。从sed手册页:

可以使用反斜杠或换行符以外的任何字符代替斜杠来分隔RE和替换


你说的递归是什么意思?您的示例似乎只更改了一个文件。是否要将此应用于当前目录下的所有文件?或者是所有的PHP文件?如果是这样,请提供您喜欢的shell和操作系统,因为工具可能会有所不同。