Windows系统find和findstr命令

2023-07-25  本文已影响0人  羋学僧

字符串搜索、查找、筛选命令

一、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 找不到搜索的文件或提供了无效的命令行开关

注解

示例

若要显示包含字符串“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)

二、findstr语法

findstr [/b] [/e] [/l | /r] [/s] [/i] [/x] [/v] [/n] [/m] [/o] [/p] [/f:<file>] [/c:<string>] [/g:<file>] [/d:<dirlist>] [/a:<colorattribute>] [/off[line]] <strings> [<drive>:][<path>]<filename>[ ...]

参数

参数 说明
/b 如果文本模式位于行的开头,则匹配该模式。
/e 如果文本模式位于行的末尾,则匹配该模式。
/l 逐字处理搜索字符串。
/r 将搜索字符串作为正则表达式进行处理。 这是默认设置。
/s 搜索当前目录和所有子目录。
/i 在搜索字符串时忽略字符大小写。
/x 打印完全匹配的行。
/v 仅打印不包含匹配项的行。
/n 打印匹配的每一行的行号。
/m 如果文件包含匹配项,则仅打印文件名。
/o 打印每个匹配行之前的字符偏移量。
/p 跳过包含不可打印字符的文件。
/off[line] 不跳过设置了脱机属性的文件。
/f:<file> 从指定文件获取文件列表。
/c:<string> 使用指定的文本作为文本搜索字符串。
/g:<file> 从指定文件获取搜索字符串。
/d:<dirlist> 搜索指定的目录列表。 每个目录都必须用分号 (;) 分隔,例如 dir1;dir2;dir3
/a:<colorattribute> 指定具有两个十六进制数字的颜色属性。 键入 color /?,获取其他信息。
<strings> 指定要在 filename 中搜索的文本。 必需。
[\<drive>:][<path>]<filename>[...] 指定要搜索的位置和文件。 至少需要一个文件名。
/? 在命令提示符下显示帮助。

注解

示例

若要在文件x.y中搜索 "hello" 或 "there",请键入:

findstr hello there x.y

若要在文件 x.y 中搜索 hello there ,请键入:

findstr /c:"hello there" x.y

若要查找文件 proposal.txt 中所有出现的单词 Windows(首字母大写字母 W),请键入:

findstr Windows proposal.txt

要搜索当前目录和所有包含单词 Windows 的子目录中的每个文件,无论字母大小写如何,请键入:

findstr /s /i Windows *.*

要查找所有以 FOR 开头且前面有零个或多个空格的行(如在计算机程序循环中),并显示找到每个出现的行号,请键入:

findstr /b /n /r /c:^ *FOR *.bas

若要在文本文件中列出要搜索的确切文件,请使用文件 stringlist.txt 中的搜索条件,搜索 filelist.txt 中列出的文件,然后将结果存储在文件 results.out 中,键入:

findstr /g:stringlist.txt /f:filelist.txt > results.out

若要列出当前目录和所有子目录中包含单词 computer 的每个文件,无论大小写,请键入:

findstr /s /i /m \<computer\> *.*

若要列出包含单词 computer 和任何其他以 comp 开头的单词的每个文件(例如 compliment 和 compete),请键入:

findstr /s /i /m \<comp.* *.*
上一篇 下一篇

猜你喜欢

热点阅读