可以和这个教程相互观看👉Linux中搜索文件中字符的命令
如何批量替换网站文件内容或者网址,
用的 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 也可以将单行或多行文本输入转换成其他格式,例如单行变多行,多行变单行。
请注意,在运行任何命令之前,确保你在正确的目录下,并且已经备份了文件,以防意外修改。
将本目录下所有文件中的ip批量更换ssh代码 比如所有文件中的ip地址1.1.1.1替换为2.2.2.2
将当前目录及其子目录中所有文件里的1.1.1.1替换为2.2.2.2:
sed -i "s|1.1.1.1|2.2.2.2|g" $(grep "1.1.1.1" -rl .)
linux替换,linux修改,服务器替换文字,服务器替换代码,字符替换,批量替换,代码替换,字符批量替换
命令解析:
grep "1.1.1.1" -rl .:在当前目录(.表示当前目录)下递归查找所有包含1.1.1.1的文件-r:递归搜索子目录-l:只输出包含匹配内容的文件名
sed -i "s|1.1.1.1|2.2.2.2|g":对找到的文件执行替换操作-i:直接修改文件内容- 使用
|作为分隔符,避免 IP 地址中.带来的问题(虽然.在这里不影响,但保持与你示例一致的风格) g:全局替换,确保每行中所有的1.1.1.1都被替换














