Ubuntu 替换目录和所有子目录中的表达式

Ubuntu 替换目录和所有子目录中的表达式

如何在所有目录和子目录中用另一个表达式替换带有正斜杠的表达式?

我用它找到: grep -rnw "/var/www/site" -e "app/COD1"

现在我想在所有文件中用“app2/COD2”替换“app/COD1”。

我 cd 到目录 /var/www/site 并尝试使用:sed -i 's,app/COD1,app2/COD2,g' *sed -i 's/'app/ABC'/'apps/ABC'/g' * 没有成功......

答案1

您需要-e在命令行上指定命令的选项。鉴于此,以下方法对我有用:

$ cat file.txt
app/COD1
app/COD2
app2/COD1
app/COD1
app/COD1
$ sed -i -e "s,app/COD1,app2/COD2,g" file.txt
$ cat file.txt
app2/COD2
app/COD2
app2/COD1
app2/COD2
app2/COD2

如果您要替换可能带有逗号(或您选择的任何分隔符)的内容,使用反斜杠也是可行的:

$ sed -i -e "s/app\\/COD1/app2\\/COD2/" file.txt

答案2

grep -rl 'app/ABC' /opt/apps/ABC | xargs sed -i -e "s,app/ABC,apps/ABC,g"

相关内容