在文件中搜索指定字符串时,建议使用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