如何查找服务器中所有包含当前IP地址的文本文件
问题原因
你之前执行的命令:
ls /bin/ /usr/bin | sort | uniq | grep ip
作用是筛选/bin、/usr/bin目录下文件名带ip字符的可执行程序,本质是在找和IP相关的命令,完全没有执行「遍历文件+匹配文件内容」的逻辑,无法满足查找包含当前IP的文本文件的需求。
可行操作步骤
1. 先定义待匹配的IP变量
根据你要查找的IP类型,执行对应命令把IP存入临时变量,后续查找直接调用即可:
- 若要匹配服务器主内网IP:
CURRENT_IP=$(hostname -I | awk '{print $1}')
- 若要匹配服务器公网IP,直接把你的公网IP赋值给变量即可,示例:
CURRENT_IP="123.123.123.123"
2. 执行递归查找命令
全盘查找所有包含该IP的文本文件,自动跳过二进制文件和系统虚拟目录,避免无意义遍历和报错:
sudo grep -rIl --exclude-dir={proc,sys,dev,run} "$CURRENT_IP" /
参数说明
sudo:提权遍历所有系统目录,避免权限不足导致的文件漏扫-r:递归遍历指定路径下的所有子目录-I:自动忽略二进制文件,仅匹配文本类文件-l:仅输出匹配成功的文件路径,不打印具体匹配的行内容--exclude-dir:排除/proc、/sys等内存虚拟文件系统目录,减少无效扫描- 命令末尾的
/代表从根目录开始全盘扫描,如果你只需要查找指定目录(比如/etc配置目录、/home用户目录),可以把/替换为对应目录路径,大幅提升扫描速度。
可选优化:避免IP段误匹配
如果你需要精确匹配完整IP,避免出现「要找192.168.1.2却匹配到192.168.1.23」的情况,可以给grep加-w参数按整词匹配,修改后命令如下:
sudo grep -rwIl --exclude-dir={proc,sys,dev,run} "$CURRENT_IP" /
内容的提问来源于stack exchange,提问作者nubie2022
相关产品推荐
相关产品推荐

