我正在寻找运行脚本或命令来批量更改作为 URL 的字符串。我在这个论坛上看过很多例子,但没有一个有效。
我创建了一个 .sh 文件来运行以下命令:
$SRC='$url = "https://www.myurl.com/subdir/process.do"';
$DST='$url="https://api.myurl.com/subdir/process.do"';
find . -type f -name "*.php" -exec sed -i 's/$SRC/$DST/g' {} +;
这是行不通的。我想这可能是因为搜索内容中有反斜杠?需要在 .php 文件的所有子目录中运行搜索/替换。
如有任何帮助,我们将不胜感激。
谢谢!
最佳答案
首先 - 检查您的变量定义。在 bash 中,变量定义通常不以前导 $ 开头。即,应该是:
SRC='$url = "https://www.myurl.com/subdir/process.do"';
DST='$url="https://api.myurl.com/subdir/process.do"';
接下来,您应该切换为对模式使用单引号,对变量使用双引号,如下所示: https://askubuntu.com/questions/76808/how-do-i-use-variables-in-a-sed-command
似乎可行的示例:
sed -i 's,'"$SRC"','"$DST"','
更新:这个脚本在 Linux 上非常适合我:
#!/bin/bash
SRC='$url = "https://www.myurl.com/subdir/process.do"';
DST='$url="https://api.myurl.com/subdir/process.do"';
find . -type f -name "*.php" -exec sed -i 's,'"$SRC"','"$DST"',' {} \;
在主目录中创建的文件“asdf.php”的内容(运行脚本之前):
$url = "https://www.myurl.com/subdir/process.do"
运行脚本后“asdf.php”文件的内容:
$url="https://api.myurl.com/subdir/process.do"
关于linux - 在所有文件中搜索和替换 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49518690/