如何批量替换网站文件内容或者网址,
用的 linux批量替换文件命令
我想批量替换 网站所有文件里面的网址
比如 把 www.abc.com 批量替换成 www.123.com
经过自己一番研究 搞定
对于网站被恶意植入代码的用得上 批量查找替换 方法如下:
sed -i "s/www.abc.com/www.123.com/g" `grep www.abc.com -rl /www/wwroot`
解释:
sed -i "s/要查找的文件/要修改成的文件/g" `grep 要查找的文件 -rl 你的文件路径`
注意上面4处需要修改的地方
注意:在执行前备份并测试,别替换错了。如果宝塔里面执行不了就在服务器上执行。
更进一步修改
sed -i "s/www.abc.com/www.123.com/g" $(grep www.abc.top -rl /www/wwwroot/)
使用了 $()
而不是反引号 (`) 来执行命令替换。这在现代 shell(如 bash)中是推荐的,因为它更易于阅读,并且对于嵌套命令替换更为安全。
如果网址带http:// ,出现和分隔符 /
相同的字符
sed -i "s|www.abc.com|www.123.com/mypage/yhq|g" $(grep "www.abc.com" -rl /www/wwwroot)
这里我将分隔符 /
改为了 |
,以避免替换字符串中可能出现的 /
字符引发问题。同时,我使用了 $()
来获取 grep
命令的结果,这是一种更现代和推荐的方式。
如果文件太多,比如用了缓存,缓存文件太多就需要排除目录执行。
比如要排除/www/wwwroot/www.网站.com/wp-content/cache
目录,你可以使用find
命令结合grep
和sed
来完成。以下是一个修改后的命令示例:
find /www/wwwroot/www.网站.com -type f -path "/www/wwwroot/www.网站.com/wp-content/cache/*" -prune -o -exec grep -l "www.abc.com" {} + | xargs sed -i "s/www.abc.com/www.123.com/g"
这个命令使用find
来查找文件,通过-path
参数指定要排除的目录,并使用-prune
来忽略该目录。然后,使用-o
将查找条件与-exec
结合,对匹配到的文件执行grep
命令。最后,通过xargs
将匹配到的文件传递给sed
命令进行替换操作。
①-o
和 -exec
是 find
命令的选项。
-o
表示逻辑 OR,用于组合多个查找条件。它允许你指定多个条件,如果文件满足其中任意一个条件,都会被找到。-exec
用于对找到的文件执行某个命令。后面通常跟着一个{}
,表示找到的文件将替换{}
,然后执行后面的命令。
这两个选项经常组合使用,以便对满足某些条件的文件执行特定操作。在你提供的命令中,-o -exec
的作用是找到包含字符串 “www.abc.com” 的文件,并将这些文件传递给 sed
命令进行替换操作。
②grep -l
的意思是列出包含匹配模式的文件名,而不显示匹配的行。这里的 -l
是 grep
命令的一个选项,表示“files-with-matches”(只列出包含匹配行的文件名)。
例如,如果你运行命令 grep -l "pattern" *.txt
,它会在当前目录下的所有 .txt
文件中搜索包含 “pattern” 的行,并列出包含该模式的文件名,而不是具体的匹配行。
③xargs
是一个用于给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长于将标准输入数据转换成为命令行参数,能够将管道或者标准输入(stdin)里的数据转换成特定命令的命令行参数。xargs
也可以将单行或多行文本输入转换成其他格式,例如单行变多行,多行变单行。
请注意,在运行任何命令之前,确保你在正确的目录下,并且已经备份了文件,以防意外修改。
linux替换,linux修改,服务器替换文字,服务器替换代码