gpt4 book ai didi

linux - 在所有文件中搜索和替换 URL

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:20 24 4
gpt4 key购买 nike

我正在寻找运行脚本或命令来批量更改作为 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com