目录
命令格式
findstr [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file][/C:string] [/G: file] [/D:dirlist] [/A:colorattributes] [strings] [ [drive:] [path] filename [ ... ] ]
【/B参数和/E参数】
/B参数: 如果搜索文本位于行开头则匹配,B是begin的首字母。
/E参数:如果搜索文本位于行末尾则匹配,e是end的首字母。
示例
a.txt的内容如下:
a b c
x y z
abc
xyz //这是最后一行,但是末尾没有回车符,“z”不会被看作行末字符串
运行
C:\>findstr -b a a.txt //命令一
a b c
abc
C:\>findstr /b ^a a.txt //命令二 这里/b参数可以省略
a b c
abc
C:\>findstr /e z a.txt //命令三
x y z
C:\>findstr /e z$ a.txt //命令四 这里/e参数可以省略
x y z
C:\>findstr /e /c:z a.txt //命令五
x y z
解析
- 命令一:搜索开头为“a”的行,缺省值是/R参数(指定搜索文本是正则表达式),“a”是正则表达式
- 命令二:搜索开头为“a”的行,缺省值是/R参数(指定搜索文本是正则表达式),“^a”是正则表达式
- 命令三:搜索行末为“z”的行,缺省值是/R参数(指定搜索文本是正则表达式),“z”是正则表达式
- 命令四:搜索行末为“z”的行,缺省值是/R参数(指定搜索文本是正则表达式),“z$”是正则表达式
- 命令五:搜索行末为“z”的行,缺省值是/L参数(指定搜索文本是文字字符串),“/c:z”指明“z”是文字字符串(不是正则表达式)
【/S参数】
在当前目录及其子目录下的filename指定文件(即:在当前目录递归查找filename指定文件)中,查找strings(或/C:string指定的字符串)。
示例
c:\out的目录结构如下:
C:\>tree /f out
卷 系统 的文件夹 PATH 列表
卷序列号为 B019-EC3F
C:\OUT
│ a.txt
│
└─ziDir
│ a.txt
│
├─other
│ a.txt
│
└─sunDir
a.txt
c:\out目录下a.txt的内容如下:
one two three
11 22 33
a b c
c:\out\ziDir目录下a.txt的内容如下:
that is one!
x y z
c:\out\ziDir\other目录下a.txt的内容如下:
this is a book.
c:\out\ziDir\sunDir目录下a.txt的内容如下:
two and one
11 22 33
运行
C:\>findstr /s /d:out one a.txt
out:
a.txt:one two three
ziDir\a.txt:that is one!
ziDir\sunDir\a.txt:two and one
解析
- 只有c:\out\ziDir\other目录下a.txt中没有包含“one”,所以,该文件不会被输出,其它的a.txt文件被输出
【/D:dirlist参数】
- dirlist指定要查找的目录列表, 不同的目录以分号作为分隔
- /s选项和/d选项一起连用时,/s选项会导致findstr命令在/d选项指定的所有目录中递归查找被搜索文件,例如:C:\>findstr /s /d:D:\second;C:\first searchText test.txt
上述命令中,/s选项会导致findstr命令在/d选项指定的D:\second和C:\first目录中递归搜索test.txt,在找到的所有test.txt中,搜索searchText,并把匹配的行输出。
【注意】/s选项和/d选项(其值不包括当前目录时)一起连用时,则不会在当前目录下递归查找。想要在当前目录和/d选项指定的D:\second和C:\first目录中递归搜索,需要使用下面命令:C:\>findstr /s /d:D:\second;C:\first;. searchText test.txt
示例
c:\out目录下a.txt的内容如下:
one two three
11 22 33
a b c
c:\inner目录下a.txt的内容如下:
that is one!
x y z
运行
C:\>findstr /d:out;inner one a.txt
out:
one two three
inner:
that is one!
解析
- c:\inner目录下a.txt和c:\inner目录下a.txt都包含“one”,故皆被匹配。
【/A:colorattributes】
指定十六进制数的颜色属性,颜色属性由两个十六进制数字指定:第一个为背景,第二个则为前景。每个数字可以为以下任何值之一:
如果没有指定/A:colorattributes参数,findstr命令会将使用 CMD.EXE 启动时的颜色,findstr无法把搜索文本以特殊颜色标记出来。
用法一:实现把包含搜索文本的文件名(包括目录名)以特殊颜色标记出来,但是,使用/m参数时,如果文件含有匹配项,则只打印其文件名,颜色标记就会再度消失。
用法二:使用/N参数显示行数时,指定行号的颜色属性
示例
c:\out目录下a.txt的内容如下:
one two three
11 22 33
a b c
运行
解析
- “/a:04”表明:背景色是黑色(十六进制为0),前景色是红色(十六进制为4)
【总结】
findstr是DOS命令中比较复杂的一条命令,它之所以功能强大,是因为它具有以下特性:
- 支持单目录、多目录搜索
- 支持正则表达式,由于篇幅问题,本文未详述findstr命令的正则表达式用法, 详见
- 支持递归搜索
写作不易,如果您觉得对您有用,请 “在下面一圈三连”。