Findstr

来自泡泡学习笔记
BrainBs讨论 | 贡献2023年7月25日 (二) 07:18的版本 (创建页面,内容为“搜索文件中的文本模式。 ===语法=== 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 将搜索字符串作为正…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

搜索文件中的文本模式。


语法

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>[...] 指定要搜索的位置和文件。 至少需要一个文件名。
  • /? 在命令提示符下显示帮助。


注解

所有 findstr 命令行选项都必须位于命令字符串中的 strings 和 filename 之前。


正则表达式使用文本字符和元字符查找文本模式,而不是确切的字符串。


文本字符是在正则表达式语法中没有特殊含义的字符,它只是匹配该字符的出现。 例如,字母和数字是文本字符。


元字符是正则表达式语法中具有特殊含义的符号(运算符或分隔符)。


接受的元字符为:

  • . 通配符 - 任意字符
    • 重复 - 上一个字符或类的零次或多次出现。
  • ^ 起始行位置 - 行的开头。
  • $ 结束行位置 - 行的末尾。
  • [class] 字符类 - 集中的任何一个字符。
  • [^class] 逆向类 - 不在集中的任何一个字符。
  • [x-y] 范围 - 指定范围内的任何字符。
  • \x 转义 - 元字符的文本使用。
  • \<string 起始单词位置 - 单词的开头。
  • string\> 结束单词位置 - 单词的结尾。


一起使用时,正则表达式语法中的特殊字符具有最高优先级。 例如,使用通配符 (.) 和重复字符 (*) 的组合来匹配任何字符串:.*


使用以下表达式作为更大的表达式的一部分,以匹配以 b 开头并以 ing结尾的任何字符串: b.*ing


若要在一组文件中搜索多个字符串,必须在单独的行中创建包含每个搜索条件的文本文件。


除非参数的前缀为 /c,否则使用空格分隔多个搜索字符串。


示例

若要在文件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.* *.*