find
在一个或多个文件中搜索文本字符串,并显示包含指定字符串的文本行。
语法
find [/v] [/c] [/n] [/i] [/off[line]] <"string"> [[<drive>:][<path>]<filename>[...]]
参数
参数 | 说明 |
---|---|
/v | 显示不包含指定 <string> 的所有行。 |
/c | 对包含指定 <string> 的行进行计数,并显示总计。 |
/n | 每行前面都有文件的行号。 |
/i | 指定搜索不区分大小写。 |
/off[line] | 如果文件设置了脱机属性,则不会被跳过。 |
<"string"> |
必需。 指定想要搜索的字符组(用引号括起来)。 |
[<drive>:][<path>]<filename> |
指定要在其中搜索指定字符串的文件的位置和名称。 |
/? | 在命令提示符下显示帮助。 |
退出代码
退出代码 | 说明 |
---|---|
0 | 已找到搜索的字符串 |
1 | 找不到搜索的字符串 |
2 | 找不到搜索的文件或提供了无效的命令行开关 |
备注
如果不使用 /i,此命令将搜索你为字符串指定的确切内容。 例如,此命令以不同的方式处理字符
a
和A
。 但是,如果使用 /i,搜索将不区分大小写,并且会将a
和A
视为相同的字符。如果要搜索的字符串包含引号,则必须对字符串中包含的每个引号使用双引号(例如,“此字符串包含引号”)。
如果省略文件名,此命令将充当筛选器,从标准输入源(通常为键盘、管道 (|) 或重定向文件)获取输入,然后显示包含字符串的任何行。
若要退出控制台搜索,请使用
CTRL-X
或CTRL-z
。可以按任意顺序键入 find 命令的参数和命令行选项。
搜索的字符串中不得出现通配符(* 和 ?)。 若要搜索具有通配符和正则表达式模式的字符串,可以使用 FINDSTR 命令。
如果在同一命令行中使用 /c 和 /v,此命令将显示不包含指定字符串的行计数。 如果在同一命令行中指定 /c 和 /n,则 find 将忽略 /n。
此命令无法识别回车符。 使用此命令搜索包含回车符的文件中的文本时,必须将搜索字符串限制为可在回车符之间找到的文本(即不太可能被回车中断的字符串)。 例如,如果在单词 tax 和 file 之间出现回车符,则此命令不会报告字符串 tax 文件的匹配项。
此命令接受文件名的通配符。 在一个文件或多个文件中搜索时,它将打印所处理的文件(前面有 10 个短划线)。
Find 命令无法读取备用数据流。 若要在备用数据流中搜索,请使用 findstr、more 或 for /f 命令。
示例
若要显示包含字符串“pencil sharpener”的 pencil.md 中的所有行,请键入:
find "pencil sharpener" pencil.md
为了在 report.txt 文件中找到文本“科学家标明他们的论文仅供讨论,并不是最终报告。”(含引号),请键入:
find """The scientists labeled their paper for discussion only. It is not a final report.""" < report.txt
若要搜索一组文件,可以使用通配符。 若要在当前目录中搜索扩展名为 .bat 且包含忽略大小写的字符串 PROMPT 的文件,请键入:
find /i "PROMPT" *.bat
若要在包含字符串 CPU 的目录中查找文件名,请使用管道 (|) 将 dir 命令的输出定向到 find 命令,如下所示:
dir c:\temp /s /b | find "CPU"
查找不包含代理的所有正在运行的进程:
tasklist | find /v /i "agent"
检查服务是否正在运行:
sc query Winmgmt | find "RUNNING" >nul 2>&1 && (echo service is started) || (echo service is stopped)