
在 Windows 的命令提示符(CMD)里,我们有两个常常用来查找文件内容的命令:find 和 findstr。
它俩的作用有点像“文件里的 Ctrl + F”,但一个简单、一个强劲。下面我们一起来看看怎么用。
一、find命令 —— 简单好用的小工具
find 是最基础的搜索命令,用来在文件里找有没有某个字符串。
✅ 基本格式:
find [参数] "要找的内容" [文件名]
常见参数:
|
参数 |
意思 |
|
/i |
忽略大小写(列如 “Error” 和 “error” 当成一样) |
|
/n |
显示行号 |
|
/v |
反选,显示不包含关键字的行 |
|
/c |
只显示匹配的行数,不显示内容 |
举几个例子:
1️⃣ 找出 server.log 文件里含有“error”的行:
find "error" server.log
2️⃣ 不区分大小写:
find /i "error" server.log
3️⃣ 只看有几行匹配:
find /c "error" server.log
4️⃣ 反着来,显示不含“error”的行:
find /v "error" server.log
5️⃣ 顺便显示行号:
find /n "error" server.log
小结一下:
find 命令简单、直接,适合查一个文件、一个关键字的情况。
二、findstr命令 —— 升级版,更强更灵活
findstr 就是 find 的进阶版,功能更全。
它不仅能查,还能用正则表达式、查多个关键字、甚至能递归搜索文件夹里的所有文件。
✅ 基本格式:
findstr [参数] "要找的内容" [文件名或路径]
常见参数:
|
参数 |
意思 |
|
/i |
忽略大小写 |
|
/s |
连子文件夹一起搜 |
|
/n |
显示行号 |
|
/m |
只显示包含关键字的文件名(不显示内容) |
|
/r |
使用正则表达式 |
|
/c:”字符串” |
准确匹配带空格的完整短语 |
|
/v |
显示不包含关键字的行 |
举例说明:
1️⃣ 在 server.log 中找“error”:
findstr "error" server.log
2️⃣ 忽略大小写:
findstr /i "error" server.log
3️⃣ 查找整个文件夹及子文件夹:
findstr /s "error" *.log
4️⃣ 只看哪些文件含有“error”:
findstr /s /m "error" *.log
5️⃣ 搜多个关键字:
findstr "error warning fail" server.log
6️⃣ 搜一个短语(列如“connection timeout”):
findstr /c:"connection timeout" server.log
7️⃣ 用正则表达式找 IP 地址:
findstr /r "[0-9]*.[0-9]*.[0-9]*.[0-9]*" access.log
⚖️ 三、两者对比一下
|
功能 |
find |
findstr |
|
多关键字搜索 |
❌ 不行 |
✅ 可以 |
|
递归搜索子目录 |
❌ 不行 |
✅ 可以 |
|
支持正则表达式 |
❌ 不行 |
✅ 可以 |
|
只显示文件名 |
❌ 不行 |
✅ /m 可以 |
|
忽略大小写 |
✅ /i |
✅ /i |
|
简单易用 |
✅ |
⚠️ 稍复杂但更强劲 |
四、几个实用小技巧
1️⃣ 查找日志文件中所有报错的文件:
findstr /s /m "error" *.log
2️⃣ 查找所有子目录下包含“timeout”的行并显示行号:
findstr /s /n /i "timeout" *.txt
3️⃣ 想数一数“error”出现了几次,可以这么写:
findstr "error" server.log | find /c /v ""
这里是把 findstr 的结果再交给 find 去统计数量。
总结一下
- find:简单版,只能在文件里找某个词。
- findstr:升级版,能查多个词,还能用正则表达式、递归文件夹、显示文件名。
一句话总结
要快用 find,要强用 findstr。
如果这篇文章对你有协助,欢迎点赞、收藏、转发!关注我,学习更多干货知识!
评论区留言,领取《从零到精通:CMD命令实战全能教程》电子书!
用cmder或者wsl下面的bash,bash这个掌握了基本上可以纵横天下,所有操作系统通用。
真不戳💪