当前位置:网站首页>【批处理DOS-CMD命令-汇总和小结】-字符串搜索、查找、筛选命令(find、findstr),Find和findstr的区别和辨析
【批处理DOS-CMD命令-汇总和小结】-字符串搜索、查找、筛选命令(find、findstr),Find和findstr的区别和辨析
2022-07-06 17:01:00 【dssgresadfsrgre】
一、find命令
1.1 打印find命令的帮助信息
执行命令【find /?】。
C:\Users\Administrator>find /?
在文件中搜索字符串。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
/V 显示所有未包含指定字符串的行。
/C 仅显示包含字符串的行数。
/N 显示行号。
/I 搜索字符串时忽略大小写。
/OFF[LINE] 不要跳过具有脱机属性集的文件。
"string" 指定要搜索的文本字符串。
[drive:][path]filename
指定要搜索的文件。
如果没有指定路径,FIND 将搜索在提示符处键入
的文本或者由另一命令产生的文本。
1.2 字段string和filepath的语法
find 命令不能识别回车。当使用 find 在包含回车的文件中搜索文本时,必须将搜索字符串限制在可以在两个回车之间找到的文本,也就是不能被回车中断的字符串。例如,“tax”与“file”之间出现回车时,find 不会报告找到“tax file”字符串。换句话说,find仅仅针对位于同一行上的字符串,不能查找跨行的字符块。
要查找将文字包含在引号之内的字符串,必须首先将整个字符串用引号围绕起来。其次,每个包含在字符串内的引号必须使用两个双引号括起来。要在 Report.doc中查找【abc"def"gh】,请键入:
find "abc""def""gh" report.doc
如果想要多重条件筛选,在文本文件中查找既包括字符串A又包括字符串B的行,可借助管道符,具体见本文的1.8小节。
字段string不支持通配符,如果想要搜索包括字符串A或字符串B的行,可以借助for命令。
for %f in (abc def) do find "%f" test.txt
字段filepath支持通配符,至于为啥网上有些文章说不支持,需要搭配for命令语句使用,我也不是很清楚,可能是因为cmd版本迭代的缘故吧!
详见1.3.2小节查看字段filepath的通配符用法。
1.3 最基本用法:find "string" filepath
在某文本文件,或一堆文本文件中搜索一个字符串所在行的信息。
1.3.1 在单个文件中查找英文字符
例如,查找tool.txt文本文件中存在字符串【AA】的行。
执行命令【find "AA" tool.txt】,结果如下所示(如果文本文件中有中文,需要用命令chcp 65001先切换至utf8编码,不然结果显示乱码)。
1.3.2 在多个文件中查找中文字符
在决定要查找中文字符前,一定要用chcp 65001开启utf8编码,不然搜索不到。
命令 find的string字段不支持通配符,也即如果执行【find "A?" tool.txt】,最后不会显示任何行中有"A?",因为把问号当成普通问号处理了。
但是filepath字段支持通配符,也即如果执行 【find "朝朝" tool*.txt】,最后会显示所有以tool开头命名的txt文件。
1.4 不区分大小写——参数/i
默认是区分大小写的,当加了参数/i后就不区分了。
在上面1.2节的文本文件基础上,执行命令【find /i "aa" "tool?.txt"】,结果如下。
参数/i可以和其他任何参数配合,不会有逻辑上的矛盾与冲突。
1.5 搜索不包括指定字符串的行——参数/v
默认搜索包括指定字符串的行,当加了参数/v后就反向搜索。
在上面1.2节的文本文件基础上,执行命令【find /v "AA" "tool.txt"】,结果如下。
参数/v可以和其他任何参数配合,不会有逻辑上的矛盾与冲突。
1.6 添加行标号——参数/n
默认不标号,仅仅显示所在行的文本内容,当加了参数/n后就额外标号(不是仅标号)。
在上面1.2节的文本文件基础上,执行命令【find /n "AA" "tool.txt"】,结果如下。
参数/n可以和其他任何参数配合,不会有逻辑上的矛盾与冲突。
1.7 仅显示目标行的数目——参数/c
默认仅仅显示所在行的文本内容,当加了参数/c后就仅显示存在字符串的行数量。
c是count的简写,表示计数。
在上面1.2节的文本文件基础上,执行命令【find /c "AA" "tool.txt"】,结果如下。
参数/c除了和参数/n矛盾,其他都不矛盾。如果实在有些人写的时候把这两个参数全部添加上去了,不管顺序如何,最终只有参数/c会生效。
帮助信息对参数/c的文字描述有毛病,更准确来说应该是【仅显示行数】,因为它可以和参数/v一起搭配,表示【仅显示未包括字符串的行数】,执行【find /c /v "AA" "tool.txt"】的结果如下。
1.8 配合管道命令(管道符)使用
管道符左边语句的输出结果,会输入给右边语句。
find支持同管道符配合使用,如果管道符右边是find语句,那么左边的输出字符串文本就会作为右边find语句的查找对象。
find "abc" test.txt | find "xyz"
上面这句表示在test.txt中查找同时存在字符串abc和字符串xyz的行,即实现多重过滤。
1.9 作为实时筛选器搜索在线键入字符串
关于实时筛选器,在1.1小节打印的帮助信息如是所言↓↓↓↓
如果没有指定路径,FIND 将搜索在提示符处键入的文本或者由另一命令产生的文本。
也就是说,不给文本文件路径、也不连接在管道符的终端,就只能用键盘实时输入的字符串行了。
执行命令【find "abc"】,光标换行在头端闪烁。
随便打一个没有abc的字符串行——【123456789】,然后回车。
在打一个有abc的字符串行——【I miss you, abc!】,然后回车。
可以发现,这一行字符串又原封不动地被输出,说明它通过了“严峻的考验”,哈哈哈哈...
进入之后,如何退出筛选器呢?用快捷键【ctrl+c】,命令【exit】不能退出。
二、findstr命令
findstr命令比find命令还要强大,因为它还支持正则表达式,称得上“强者中的强者”。
2.1 打印findstr命令的帮助信息
C:\Users\Administrator>findstr /?
在文件中寻找字符串。
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ ...]]
/B 在一行的开始配对模式。
/E 在一行的结尾配对模式。
/L 按字使用搜索字符串。
/R 将搜索字符串作为一般表达式使用。
/S 在当前目录和所有子目录中搜索匹配文件。
/I 指定搜索不分大小写。
/X 打印完全匹配的行。
/V 只打印不包含匹配的行。
/N 在匹配的每行前打印行数。
/M 如果文件含有匹配项,只打印其文件名。
/O 在每个匹配行前打印字符偏移量。
/P 忽略有不可打印字符的文件。
/OFF[LINE] 不跳过带有脱机属性集的文件。
/A:attr 指定有十六进位数字的颜色属性。请见 "color /?"
/F:file 从指定文件读文件列表 (/ 代表控制台)。
/C:string 使用指定字符串作为文字搜索字符串。
/G:file 从指定的文件获得搜索字符串。 (/ 代表控制台)。
/D:dir 查找以分号为分隔符的目录列表
strings 要查找的文字。
[drive:][path]filename
指定要查找的文件。
除非参数有 /C 前缀,请使用空格隔开搜索字符串。
例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中寻找 "hello" 或
"there"。'FINDSTR /C:"hello there" x.y' 文件 x.y 寻找
"hello there"。
一般表达式的快速参考:
. 通配符: 任何字符
* 重复: 以前字符或类出现零或零以上次数
^ 行位置: 行的开始
$ 行位置: 行的终点
[class] 字符类: 任何在字符集中的字符
[^class] 补字符类: 任何不在字符集中的字符
[x-y] 范围: 在指定范围内的任何字符
\x Escape: 元字符 x 的文字用法
\<xyz 字位置: 字的开始
xyz\> 字位置: 字的结束
有关 FINDSTR 常见表达法的详细情况,请见联机命令参考。
(1)对/d:dir的补充说明,原帮助信息不太直观,举个例子【/d:dir1;dir2;dir3】。
(2)对参数/r的补充说明,现在默认是可以不加,不加string也会被识别成正则表达式(一般表达式)的。可能原先是只有加了这个参数字段strings才算是正则表达式,而改版之后这个参数还留着。属于历史遗留问题。
2.2 字段strings和参数/r、参数/g:file
2.2.1 字段strings和参数/c:string
字段strings是用来指定搜索字符串的,不知道大家注没注意到这个单词是复数形式?
其实这意味着字段strings允许包括多个字符串,各个字符串之间用空格划分开,例如【abc def ghi】,就是分别搜索【abc】、【def】、【ghi】,对于某一行只要搜到了其中之一,就会通过。
如果字段strings只有一个字符串(没有空格、也没有特殊符号), 就可以不加引号。
如果字段strings是由空格分隔的多个字符串,或者单个字符串中有特殊符号(比如&),就需要加引号。
而参数/c:string的名词形式是单数,这也意味着一旦加了参数/c,就只能搜索单个字符串,具体详见本文的2.4.2小节。
字段strings和参数/c:string,都支持正则表达式(通配符更不在话下),详见下一章节。
2.2.2 正则表达式和参数/r
在findstr命令语句中,支持的典型正则表达式规则如下:
. 通配符: 任何字符
* 重复: 以前字符或类出现零或零以上次数
^ 行位置: 行的开始
$ 行位置: 行的终点
[class] 字符类: 任何在字符集中的字符
[^class] 补字符类: 任何不在字符集中的字符
[x-y] 范围: 在指定范围内的任何字符
\x Escape: 元字符 x 的文字用法
\<xyz 字位置: 字的开始
xyz\> 字位置: 字的结束
上面这10个符号是“元字符”,是在正则表达式语法中具有特殊含义 (运算符或分隔符) 的符号。
(普通的)“文本字符”是在正则表达式语法中没有特殊含义的字符,是匹配字符串的的基本项。 例如,26个字母和10个数字都是原义字符(文本字符)。
(1)通配符和重复符(.、*)
【.】号是通配符,代表一个任意字符。
【*】号是重复符,在正则表达式中不是代表任意字符,而是左侧字符或者表达式的重复次数,【*】号表示重复的次数为零次或者多次。
【.*】表示任意字符,可以是零个字符,也可是多个。
下面给出通配符和重复符的经典应用案例。
仅有【.】号时,【.】号的数量表示匹配行的最小字符数量,例如【.】匹配的是有至少一个字符的行,而【.....】匹配的是至少有5个字符的行。
从文件tool.txt中查找任意字符,不包括空字符或空行,可以执行命令【findstr . tool.txt】或【findstr "." tool.txt】。
从文件tool.txt中查找任意字符,包括空字符和空行,可以执行命令【findstr .* tool.txt】或【findstr ".*" tool.txt】。
(2)查找字符集中的任意字符([class]、[^class]、[x-y])
class形式表示可离散独立地分列,例如【aef】;减号表示取ASCII编码在左右符号之间的字符,例如[e-h]表示取从e到h之间的字母(不区分大小写);而^表示后面字符集的补集。
一般只能用ASCII字符(不能是中文字符);另外对于某些特殊字符,需要转义。
对于英文引号【"】,需要转义;如果是单个英文引号,就写成【"""】,也即["""]。
对于减号【-】不需要转义,直接写成离散形式就行,比如[-a-z]表示匹配任意字母外加一个减号。
如果在字符集内插入通配符【.】和重复符【*】,将会把【.】和【*】视为普通字符,没有通配和重复的含义。
从文件tool.txt中查找包括a、b、c、e、z、y字母的字符串或行,可执行命令【findstr "[abcezy]" tool.txt】。
从文件tool.txt中屏蔽不符合规则的字符串或行,如果是纯数字的字符串或者行便过滤掉不显示(例如237623),而如果是带有非数字字符就保留(比如34yht888),可执行命令【findstr "[^0-9]" tool.txt】。
从文件tool.txt中查找小写字符a-f,l-z的字符串,也即不包含g h I j k这几个字母,可执行命令【findstr "[a-fl-z]" tool.txt】。
从文件tool.txt中查找包括任意数字的字符串或行,可执行命令【findstr "[0-9]" tool.txt】。
从文件tool.txt中查找包括任意字母的字符串或行,可执行命令【findstr "[a-z]" tool.txt】,注意不需要写成【findstr "[a-zA-Z]" tool.txt】,因为如果是x-y的形式,默认就不区分大小写了。而如果是类似[abc]这种离散的形式,还是区分大小写的。
从文件tool.txt中匹配由两个字符集组合而成的诸如MahY , MbiY, MahY等…..,可执行命令【findstr "M[abc][hig]Y" tool.txt】。
(3)行首行尾和词头词尾(^、$、\<、\>)
在帮助信息中,“字”对应英文原型word,因此中文翻译“字还可替换成“单词”,在小标题中直接用词头词尾增强直观性。
行锚符是^和$,分别对应行头和行尾,词锚符是\<和\>,分别对应词头和词尾。
行的头与尾,也即起始位置和终止位置,理解起来很容易。
下面举一个例子,帮助大家理解行的头与尾锚符。
^表示行头,"^step"仅匹配"step hello world"中的第一个单词;$表示行尾,"step$"仅匹配 "hello world step"中最后一个单词。
下面举一个例子,帮助大家理解词的头与尾锚符。
文本文件【tool.txt】里有两行为"abcd" 和 "abcd e"。
执行命令【findstr "cd\>" tool.txt】,两行都会出现,只要是连在一起(没被空格开)的并以cd结尾的(不要求是行尾)都满足,相当于以cd结尾的单词所在行都会被查出来。
这两个行首行尾锚符,常常用来筛选出纯数字或纯字母。
譬如想要筛选tool.txt文本文件中的纯数字字符串或行,可执行命令【findstr "^[0-9]*$" tool.txt】,
例如【675758345】会被保留,而【46752kkjl4】就被过滤掉了。
譬如想要筛选tool.txt文本文件中的纯字母字符串或行,可执行命令【findstr "^[a-z]*$" tool.txt】,
例如【hythdfgdgiuf】保留,而【956sdsftgruylk】、【1321argad13】就被过滤掉。
行首行尾锚符【^、$】配合重复符【*】,实现匹配多个数量符号的字符串或行
如果在搜索字符串里没有【*】号,也就是说不重复左侧的搜索条件。
例如【^[0-9]】匹配的是行头是数字的任意字符串或行,而【[a-zA-Z]$】匹配的是行尾是字母的任意字符串或行。
而如果行首行尾锚符同时添加,也即行首行尾同时受限制,那么有几个中括号就对应有几个字符。例如【^[0-9]$】仅会匹配到只有一个数字的行,而【^[0-9][A-Za-z]$】仅会匹配到第一个字符是数字、第二个字符是字母的行。
(4)元字符的转义——/x(escape表示转义)
上面我们提到元字符包括通配符【.】、重复符【*】、任一符【[】和【]】、连续符【-】、补集符【^】、行首行尾锚符【^】和【$】、词首词尾符【/<】和【>/】。
如果把元字符比作x,那么如果我们要匹配元字符的普通文本形式,可以用【/x】;例如对连续符【-】的转义,对应的是【/-】。
另外在本文会啰嗦很多次的一点——对于双引号的转义,用双引号,也即【"】需转义成【"""】,【abc"def】需写成【abc"""def】。
对于正斜杠符【/】的转义,同双引号一样,用它自身来解决,也即【/】需转义成【//】。
2.2.3 字符串批量搜索的参数/g:filepath
参数/g后的filepath是一个文本文件,其中每一行代表一个搜索字符串。
由tool.txt文件稍加改变,生成goal.txt文件。
而后,再执行命令【findstr /g:goal.txt tool.txt】,结果如下,最后搜到两个匹配行。
2.3 字段filepath和参数/d:dir1;dir2、参数/f:file、参数/s
2.3.1 搜索位置——字段filepath
本节的filepath指的就是帮助信息中的字段[[drive:][path]filename[ ...]],属实简化版本了!
字段strings指定了搜索字符串,也即搜什么的问题;而字段filepath指定了搜索位置,也即在哪里搜的问题。
既可以采用绝对路径,也可以采用相对路径。
不仅可以搜索单个文本文件,也可搜索多个文本文件,此时不同文件的路径字符串间需用空格划开。
另外filepath也支持通配符【*】和通配符【?】。
例如执行命令【findstr /r "abc dedgth.t" tool?.txt】,最后结果中包括了tool.txt和too1.txt的信息。
再比如执行命令【findstr /r "abc" *.*】或【findstr /r "abc" "*.*"】,会在当前目录所有文件中搜索是否有字符串abc。
2.3.2 在一个或多个目录中搜索——参数/d:dir1 dir2 dir3
这个参数的使用方法,按帮助信息里写的去编写代码,理应很简单就可以实现,但是最后却无法有效地看到预期效果。
先执行命令【findstr /r /s "AA" *.*】,查找当前目录及其所有子目录下的文件中含有AA的行。
再执行命令【findstr /r /s "AA" /d:dir1;dir2】, 却报错无法找到目录。
改成绝对目录,执行【findstr /r "AA" /d:D:\D-desktop\test5\dir1;D:\D-desktop\test5\dir2】,也还是不行。
---------------------更新分割线----------------------------
经过一番探索,本人终于领会了。
原来参数/d:dir1;dir2;dir3不能放在strings的后面;原来即使添加了参数/d:dir1;dir2;dir3,也必须要给出filepath的匹配规则。
因此其实参数/d:dir1;dir2;dir3给出的只是起始搜索目录,当添加这个参数时,默认以CMD当前目录作为起始搜索目录;起始搜索目录指的是子目录的“起点”。
而之所以还要指定filepath匹配规则,是因为避免目录内存在太多非文本文件,这样搜索时极其耗时耗力,另外也可提高了匹配规则的多样性和匹配的精准程度。
执行命令【findstr /r /d:dir1;dir2;dir3 "AA" *.*】后,结果如下,非常成功!!!
2.3.3 借文本文件提供的路径(目录)来搜索——参数/f:file
新建一个文本文件,内容如下,前3行都是文件的相对路径,最后一行是一个相对目录路径
接着,指定的文件路径我们不用管,但是目录路径的话是不是像2.3.2小节一样需要在后面指定匹配规则呢?
不妨试试,我们执行命令【findstr /r /f:paths.txt "AA" "*.*"】,结果如下
而如果不指定匹配规则,执行命令 【findstr /r /f:paths.txt "AA"】,最后就没有当前目录的搜索结果了。
后来,我反思自己,是不是参数/f:filepath不支持目录路径呢?回过头看帮助信息,“读文件列表”而不是读文件夹列表,所以官方的意思应该也是不支持在里面读文件夹的。
/F:file 从指定文件读文件列表 (/ 代表控制台)。
2.3.4 搜索范围纵向深入,扩展至子目录——参数/s
如果不添加参数/s,执行命令【findstr /r "AA" *.*】,只能查找当前目录下所有符合规则的文件。
先执行命令【findstr /r /s "AA" *.*】,查找当前目录及其所有子目录下的文件中含有AA的行。
2.4 搜索方式参数/b、/e、/c、/l、/i、/x、/v、
2.4.1 行首行尾定位参数——参数/b、/e
本节的定位参数的功能实际上和正则表达式的元字符【^】、【$】功能完全相同,都是将搜索字符串只能紧靠行首或者行尾进行搜索和匹配。
例如加了参数/b,就必须把搜索字符串放在行首匹配,而某行内容是【rfgwercd fwerfreg】,我们可以用命令【findstr /l "fwerf" tool.txt】查找到这行,但是不能用命令【findstr /l /b "fwerf" tool.txt】查到。
同理,参数/e作为行尾定位参数,执行机制也很简单。
参数/b和参数/e可以同时添加,因为并不冲突,一个搜索字符串既可以贴近行头也可以作为行尾。
2.4.2 搜索字符串带空格时,需添加参数/c
如果搜索字符串有空格,比如说【A B C】,那么cmd程序默认情况下会在搜索源中依次搜索字符串【A】、【B】、【C】,只要发现有其中一个符合规则,就会通过。
但是若我们要搜索的字符串本身带有空格, 换句话说需要连带空格一起搜索呢?
就需要用到参数/c了,并且需要写成/c:string的形式。我们可以把c看成connect的缩写,空格两边字符串连接成一个整体,这样记忆参数/c更加牢固。
以命令【findstr /c:"ab c" tool.txt】为例,最后搜索到的应该是确实包括【ab c】的字符串或行;而如果不加参数/c,写成【findstr "ab c" tool.txt】,那么类似【abasdref】、【cdsagrgtr】的字符串或行也会被通过。
2.4.3 将字符串当做单词进行搜索——参数/l
这个参数我并没有搞明白怎么用。
如果搜索字符串是一个单词的部分或全部,而这个单词在某一行出现,那这一行照理的确是被通过的。
而如果搜索字符串中有空格,也即存在多个单词,这时候会对其进行分别搜索,只要某一行中字符串又正好有这多个单词之一(部分匹配或完全匹配),就会被通过。
参数/l可不可以与参数/c搭配?试试执行命令【findstr /l /c:"wercd fwerf" tool.txt】,执行结果如下。也是会通过,这一点我特别纳闷,因为既然按单词来搜索,一个单词不可能有空格,那搜索字符串中有空格又被参数/c限制成一个整体,最后反而要把它当做一个单词,岂不荒谬?
从上面的测试中,我看不到任何添加参数/l的意义,感觉加不加都一样。
2.4.4 整行匹配,行首行尾贴近——参数/x
什么叫整行匹配?也即要搜索的字符串占一行,而不是部分。
由此也易得,这种匹配模式其实和行首行尾匹配相同,也即下面3条命令的执行结果完全一样。
findstr /e /b "fg" tool.txt
findstr /x "fg" tool.txt
findstr "^fg$" tool.txt
2.4.5 不区分大小写——参数/i
findstr命令语句默认区分大小写,如果想要不区分,可以加参数/i。
参数i是ignore的简写,表示忽略,忽略掉大小写问题,不就是不区分大小写吗?
执行命令【findstr /i "aa" tool.txt】,最后搜出来的结果中有AA。
2.4.6 搜索目标字符串的补集——参数/v
默认是搜什么,输出(显示)什么,此时是选择要什么;但是有一种情况是目标不能输出(显示),此时是选择不要什么。
添加参数/v,执行命令【findstr /v "AA" tool.txt】,那些带有AA字符串的行都会被丢弃。
2.5 显示选项参数/m、/n、/o
显示选项参数/m、/n、/o只是改变显示的样式,不改变文本文件的内容。
这三个参数不与其他任何参数有冲突;但是参数/m和参数/n、参数/o有冲突,因为只显示文件名代表不能显示字符串所在行序号、也不能显示字符串偏移值。
参数/m表示仅显示文件名,
参数/n表示显示行序号,
参数/o表示显示目标字符串离文件开头的偏移值(偏移字节数,而非偏移字符数)。
对于ASCII字符,一个字符就是一个字节(例如空格),不可见的回车符、换行符占用两个字节,但是对于中文符号或汉字,一个汉字对应2-4个字节。
三、find命令和findstr命令的区别
3.1 find命令支持统计总行数
find命令支持参数/c(仅显示匹配行数),可以对符合规则的行进行数量上的统计。
例如【find /c "A" tool.txt】可以统计test.txt中含有字符串abc的总行数,而findstr命令则没有直接提供该功能,需要配合for语句才能实现。
findstr命令语句的参数/c功能不是计数(count),而是连接(connect) ;参数/c后面跟的string允许存在空格,而不会将其当做两个字符串。
3.2 find命令支持查找Unicode字符
一般来说除了字母数字这些能与ASCII兼容的字符,某一个国家专用的语言文字(比如中文简体、日本语、韩语)普遍用Utf8编码,所以要想查除了ASCII编码范围外的字符,就需要用find命令。
find能查"又岂",但是findstr查不出来。
如果你想要搜索unicode字符,并且想要类似findstr命令的强大功能,可以下载一个第三方程序——GNU Grep for windows,详见下载官网。
3.3 find命令支持过滤特殊字符
本节的观点来自网上,大概是2012年很流行;不知道为何我实现不了,可能是cmd命令有所更新?废话不多说,引述一下他们的观点,给各位观众老爷下盘陈年腌菜。
find可以过滤某些特殊字符,而findstr则不行。
比如,我们在使用【fsutil fsinfo drives】语句查询磁盘分区的时候,如果想让盘符分行显示而不是显示在同一行上的时 候(在用for语句提取盘符的时候很有用),find可以大显身手,而findstr只能干瞪眼了。
具体代码为 :【fsutil fsinfo drives|find /v ""】,输出结果如下。
如果改成findstr,就会报错。
虽然find结果也没显示成多行,但是findstr结果都没有。 可能2012年的网友说的优势就是这种意思吧?
3.4 findstr命令的string字段支持通配符
在搜索的字符串中,find不能使用通配符 (* 和 ?) 。
若要使用通配符和 regex 模式搜索字符串,只能使用findstr命令,或者下载第三方程序grep。
3.5 find命令无法读取备用数据流
find命令无法读取备用数据流。
若要在备用数据流中搜索,请使用 findstr、more或for /f命令。
上面这个引用,来自微软官网对find命令的注释。
至今我还是不懂备用数据流啥意思?英文名称是alternate data streams。
3.6 find和findstr命令都支持退出码(错误码)
find和findstr命令的退出代码一共3种,每一种代表不同的搜索结果。
退出代码 | 说明 |
---|---|
0 | 找到搜索的字符串 |
1 | 找不到搜索的字符串 |
2 | 找不到搜索的文件或指定了无效的命令行开关 |
findstr命令
find命令
边栏推荐
- Data analysis course notes (III) array shape and calculation, numpy storage / reading data, indexing, slicing and splicing
- 48页数字政府智慧政务一网通办解决方案
- 37页数字乡村振兴智慧农业整体规划建设方案
- 一图看懂对程序员的误解:西方程序员眼中的中国程序员
- 浅谈测试开发怎么入门,如何提升?
- Interface master v3.9, API low code development tool, build your interface service platform immediately
- 37 pages Digital Village revitalization intelligent agriculture Comprehensive Planning and Construction Scheme
- 2022/2/11 summary
- 学习使用代码生成美观的接口文档!!!
- 基于SSM框架的文章管理系统
猜你喜欢
三维扫描体数据的VTK体绘制程序设计
uniapp中redirectTo和navigateTo的区别
Attention SLAM:一種從人類注意中學習的視覺單目SLAM
stm32F407-------SPI通信
Business process testing based on functional testing
【软件逆向-自动化】逆向工具大全
2022 PMP project management examination agile knowledge points (9)
Learn to use code to generate beautiful interface documents!!!
深度学习之环境配置 jupyter notebook
基于GO语言实现的X.509证书
随机推荐
37頁數字鄉村振興智慧農業整體規劃建設方案
如何判断一个数组中的元素包含一个对象的所有属性值
Mujoco second order simple pendulum modeling and control
Deep learning environment configuration jupyter notebook
Everyone is always talking about EQ, so what is EQ?
接口(接口相关含义,区别抽象类,接口回调)
[yolov5 6.0 | 6.1 deploy tensorrt to torch serve] environment construction | model transformation | engine model deployment (detailed packet file writing method)
48页数字政府智慧政务一网通办解决方案
Cross-entrpy Method
The programmer resigned and was sentenced to 10 months for deleting the code. Jingdong came home and said that it took 30000 to restore the database. Netizen: This is really a revenge
X.509 certificate based on go language
基于SSM框架的文章管理系统
Basic information of mujoco
fastDFS数据迁移操作记录
2021 SASE integration strategic roadmap (I)
MySQL learning notes (mind map)
Zynq transplant ucosiii
三维扫描体数据的VTK体绘制程序设计
Leecode brushes questions to record interview questions 17.16 massagist
Encryption algorithm - password security