如何在 ubuntu 上的所有文件(包括根文件)中查找并用另一个字符串替换字符串

如何在 ubuntu 上的所有文件(包括根文件)中查找并用另一个字符串替换字符串

我正在运行 Ubuntu 20.04 服务器。这是一个完全配置的 LEMP 电子邮件和 Web 服务器。在我构建它的超长过程中,我知道我在一个或多个配置和 nginx/modsecurity 文件中输入了我的服务器 IP 地址。问题是我正在更改服务器的 IP 地址,我不记得我为配置目的输入了 IP 地址的所有文件。大多数这些配置文件位于只有 root 可访问的随机目录中。大多数文件以 .conf、.bak、.txt 或其他我不记得的内容结尾。

问题是我正在更改 IP 地址,因此我需要用我的新 IP 地址替换所有服务器文件中的旧 IP 地址。

我的问题是,我可以使用什么命令告诉 ubuntu 在所有文件中的所有字符串中搜索我的旧 IP 地址,并将其替换为我的新 IP 地址?这将省去我手动浏览每个文件的麻烦,还可以确保我不会犯错误和错过文件,从而拥有一个服务器,其中的一些文件具有我的旧 IP 地址,而一些文件具有我的新 IP 地址。

我不太了解 grep,但我认为该命令应该包含 grep 命令。任何帮助我都非常感谢。

答案1

你问的问题不清楚。下面介绍如何在系统中的每个文件中搜索旧 IP。将 替换/为另一个目录以限制搜索。

sudo find / -type f -print0 |\
     xargs -0 -r sudo grep -F -l 'oldIP'

如果您对该文件列表感到满意,请执行几乎相同的操作:

sudo find / -type f -print0 |\
     xargs -0 -r sudo grep -F -l --null 'oldIP' |\
     xargs -0 -r sudo perl -pi~ -e 's/oldIP/newIP/g' 

这会将您原始的、未修改的文件保留为filename~,以防万一。您应该在表达式中用反斜杠转义 中的点oldIP(但不是newIPperl,例如-e 's/192\.168\.97\.2/192.168.14.17/g'

相关内容