在文件中搜索指定字符串时,建议使用findstr而非find.
查找文件位置的命令用where.
find 在文件中搜索字符串。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
/V 显示所有未包含指定字符串的行。
/C 仅显示包含字符串的行数。
/N 显示行号。
/I 搜索字符串时忽略大小写。
/OFF[LINE] 不要跳过具有脱机属性集的文件。
"string" 指定要搜索的文本字符串。
[drive:][path]filename
指定要搜索的文件。
如果没有指定路径,FIND 将搜索在提示符处键入的文本或者由另一命令产生的文本。
说明:
-
指定一个字符串
如果不使用/i,find将会精确查找指定的字符串string。例如,find命令以不同方式处理字符“a”和“A”。但是,如果使用/i,则find不区分大小写,并将“a”和“A”视为相同的字符。
-
如果要搜索的字符串包含引号,则必须对字符串中包含的每个引号使用双引号(例如, “This ““string”” contains quotation marks”)。
-
使用find作为过滤器
如果省略文件名,则find充当过滤器,从标准输入源(通常是键盘,管道(|)或重定向文件)获取输入,然后显示包含String的任何行。
-
命令语法
您可以按任何顺序为find命令键入参数和命令行选项。
-
使用通配符
您不能在使用find命令指定的文件名或扩展名中使用通配符(*和?)。要在使用通配符指定的一组文件中搜索字符串,可以在for命令中使用find命令。
-
使用带回车符的find
在查找命令不能识别回车。当您使用find在包含回车的文件中搜索文本时,必须将搜索字符串限制为可在回车之间找到的文本(即,不太可能被回车中断的字符串)。例如,如果在"tax" and "file."之间发生回车,则find不会报告字符串“tax file”的匹配项。
eg:
find "Pencil Sharpener" pencil.ad
find "The scientists labeled their paper ""for discussion only."" It is not a final report." report.doc
for %f in (*.bat) do find "PROMPT" %f
% 要搜索硬盘以查找并显示包含字符串“CPU”的驱动器C上的文件名,请使用管道(|)将dir命令的输出定向到find命令,如下所示:%
dir c:\ /s /b | find "CPU"
% 由于查找搜索区分大小写且dir生成大写输出,因此必须以大写字母键入字符串“CPU”或使用带有find的/ i命令行选项。%
% 当前目录以及当前目录的所有子目录下的所有文件中查找"main"这个字符串 %
dir /S | find "main"
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\> 字位置: 字的结束
说明:
正则表达式语法中的特殊字符在一起使用时具有最大的功能。例如,使用以下通配符(.)和repeat(*)字符组合来匹配任何字符串:
.*
使用以下表达式作为较大表达式的一部分,以匹配以“b”开头并以“ing”结尾的任何字符串:
b.*ing
示例:
除非参数以/c为前缀,否则请使用空格分隔多个搜索字符串。
要在文件xy中搜索“hello”或“there”,请键入:
findstr "hello there" x.y
要在文件xy中搜索“hello there”,请键入:
findstr /c:"hello there" x.y
要在Proposal.txt文件中查找所有出现的“Windows”(带有首字母大写字母W),请键入:
findstr Windows proposal.txt
要在当前目录和所有子目录中的每个文件中搜索单词Windows,无论字母大小写,请键入:
findstr /m /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”和“competition”),请键入:
findstr /s /i /m "\<comp.*" *.*
where 显示符合搜索模式的文件位置
WHERE [/R dir] [/Q] [/F] [/T] pattern...
描述:
显示符合搜索模式的文件位置。在默认情况下,搜索是在当前目录和PATH环境变量指定的路径中执行的。
参数列表:
/R 从指定目录开始,递归性搜索并显示符合指定模式的文件。
/Q 只返回退出代码,不显示匹配文件列表。(安静模式)匹配文件。(安静模式)
/F 显示所有相配文件并用双引号括上。
/T 显示所有相配文件的文件的文件。
pattern 指定要匹配的文件的搜索模式。通配符 * 和 ? 可以用在模式中。
也可以指定 "$env:pattern" 和 "path:pattern" 格式; 其中
"env" 是环境变量,搜索是在 "env" 变量的指定的路径中执行的。
这些格式不应该跟 /R 一起使用。此搜索也可以用将 PATHEXT 变
量扩展名附加于此模式的方式完成。
/? 显示此帮助消息。
注意: 如果搜索成功,此工具返回错误级别 0; 如果不成功,返回 1; 如果失败或发生错误,返回 2。
示例:
WHERE /?
WHERE myfilename1 myfile????.*
WHERE $windir:*.*
WHERE /R c:\windows *.exe *.dll *.bat
WHERE /Q ??.???
WHERE "c:\windows;c:\windows\system32:*.dll"
WHERE /F /T *.dll