如何在 Windows 11 中使用 FindSTR 和 Select-String 命令

你听说过吗查找字符串选择字符串? Select-String 是一个 cmdlet,用于搜索输入字符串和文件中的文本和模式。它类似于 Linux 上的 grep 和 Windows 上的 FINDSTR。在本指南中,我们将了解什么以及如何使用查找字符串选择字符串Windows 11/10 中的命令。

FINDSTR 是一个用于在 Windows 上查找文件中特定文本的命令。 Find String简而言之就变成了FINDSTR。它还用于查找具有特定文本的文件。有各种 FINDSTR 命令可以执行各种功能。它首次与 Windows 2000 Resource Kit 一起发布,名称为qgrep。它是 Windows 中的内置工具,其文件以 .exe 格式提供。 FINDSTR 不会像 Unicode 格式中的空格那样搜索空字节。

在命令提示符或其他命令行解释器上使用 findstr 命令有一些基本规则,这些规则由微软。他们是:

  • 每个 FINDSTR 命令必须包含一个字符串,后跟一个文件名。
  • 您可以在 FINDSTR 命令中使用文字字符和元字符。文字字符在语法中没有任何特殊含义。字母和数字称为文字字符。元字符是一种具有特定含义的符号。以下是语法中可接受的元字符及其含义。

元字符

价值

通配符– 任何角色

*

重复– 前一个字符或类别出现零次或多次。

^

起始线位置– 行的开头。

$

结束线位置– 线路结束。

[班级]

字符类– 一组中的任何一个角色。

[^类]

逆类– 不在一组中的任何一个角色。

[xy]

范围– 指定范围内的任何字符。

\x

逃脱– 元字符的字面使用。

\

词首位置– 单词的开头。

字符串\>

结束词位置– 单词结束。

  • 当您想要搜索多个字符串时,您应该创建一个文本文件,并在单独的行上包含搜索条件。
  • 使用字符串之间的空格在单个命令中搜索多个字符串,但语法除外/c

findstr 语法中的参数及其含义

范围

描述

/b

如果文本模式位于行首,则匹配该文本模式。

/e

如果文本模式位于行尾,则匹配该文本模式。

/l

按字面意思处理搜索字符串。

/r

将搜索字符串作为正则表达式处理。这是默认设置。

/秒

搜索当前目录和所有子目录。

/我

搜索字符串时忽略字符的大小写。

/x

打印完全匹配的行。

/v

仅打印不包含匹配项的行。

/n

打印每行匹配的行号。

/米

如果文件包含匹配项,则仅打印文件名。

/o

在每个匹配行之前打印字符偏移量。

/p

跳过带有不可打印字符的文件。

/离线[线路]

不跳过设置了脱机属性的文件。

/f:<file>

从指定文件中获取文件列表。

/c:<string>

使用指定的文本作为文字搜索字符串。

/克:<file>

从指定文件中获取搜索字符串。

/d:<dirlist>

搜索指定的目录列表。每个目录必须用分号 (;) 分隔,例如dir1;dir2;dir3

/一个:<colorattribute>

用两个十六进制数字指定颜色属性。类型color
/?
获取更多信息。

<string>

指定要搜索的文本文件名。必需的。

<span “>[\<drive> :][<path> ]<filename> […]</span>

指定要搜索的位置和一个或多个文件。至少需要一个文件名。

/?

在命令提示符处显示帮助。

findstr 命令的用法

1] 要在文件 xy 中搜索单词 microsoft 或 windows,您应该使用:

findstr microsoft windows x.y

2] 要在文件 xy 中搜索单词 microsoft windows,您应该使用:

findstr /c:"microsoft windows" x.y

在上面的命令中/c用于在文件中搜索指定文本“microsoft windows”。

3] 如果您想查找文本文件 twc.txt 中出现大写 M 的 Microsoft 一词,您应该使用:

findstr Microsoft twc.txt

4] 如果您想在目录及其子目录中搜索特定单词 Microsoft 而不重视大小写,请使用:

findstr /s /i Microsoft *.*

在上面的语法中,/s用于搜索当前目录及其子目录。/i用于忽略字符串 Microsoft 中的类型大小写(大写 M)。

5] 如果您想要查找以 To 开头且单词前有多个空格的行,并且想要显示字符串出现的行号,请使用:

findstr /b /n /r /c:^ *To *.bas

6] 如果您想使用 stringlist.txt 中的搜索条件和 filelist.txt 中的文件列表搜索多个文件中的多个字符串,并且希望查看存储在文件 result.out 中的结果,请使用:

findstr /g:stringlist.txt /f:filelist.txt > results.out

7] 如果您想在特定目录及其子目录中查找包含单词 thewindowsclub 的文件,请使用:

findstr /s /i /m \<thewindowsclub\> *.*

8] 如果您想查找包含 thewindowsclub 以及以论文、温度计等开头的其他单词的文件,请使用:

findstr /s /i /m \<the.* *.*

这些是您可以在命令行解释器(例如命令提示符等)中使用 findstr 命令的方法。您必须了解每个参数及其功能以及元字符及其含义,才能编写语法并定期使用 findstr 命令。

什么是 Select-String 及其参数

想象一下,您正在 PowerShell 中编写大量代码,并且您丢失了该 PowerShell 文件中的某些字符串和文本的跟踪。您需要在数千个字符串和单词中的数千行代码中找到这一点。 Select-String 命令可让您在这些 PowerShell 输入文件中搜索字符串和文本。它类似于 Linux 上的 grep。

Select-String 是一个 cmdlet,用于搜索输入字符串和文件中的文本和模式。它类似于 Linux 上的 grep 和 Windows 上的 FINDSTR。当使用 Select-String 搜索某些文本时,它会找到每行中的第一个匹配项,并显示文件名、行号以及发生匹配的整行。它可用于在每行查找多个匹配项,或在匹配项之前或之后显示文本,或以布尔表达式(如 True 或 False)获取结果。您还可以使用它来显示除命令中使用的表达式的匹配之外的所有文本。您在 FINDSTR 中使用的通配符也可以在 Select-String 中使用。此外,Select-String 支持各种文件编码,包括 ASCII 和 Unicode。它使用字节顺序标记 (BOM) 来确定文件编码。如果文件中缺少 BOM,Select-String 将假定文件为 UTF8。

Select-String 的参数

微软设想并开发了语法中应使用的以下参数。

-AllMatches

它用于搜索一行中的所有匹配项,而不是 Select-Sting 通常搜索行中的第一个匹配项。

-CaseSensitive

它表示匹配区分大小写。默认情况下,Select-String 不区分大小写。

-Context

它用于捕获您在匹配行之前和之后输入的指定行数。如果输入 1,则会捕获比赛前后各一行。

-Culture

编码中存在某些文化,例如序数、不变性等。该参数用于指定语法中的区域性。

-Encoding

它用于指定文件中文本的编码格式,如 ASCII、UTF8、UTF7、Unicode 等。

-Exclude

该参数用于排除文件中的某些文本。

-Include

该参数用于在文件中包含某些文本。

-InputObject

它用于指定要搜索的文本。

-List

它用于检索与文本匹配的文件列表。

-LiteralPath

它用于指定搜索的路径。

-NoEmphasis

通常,Select-String 会突出显示文件中的匹配项。该参数用于避免突出显示。

-NotMatch

它用于查找与指定模式不匹配的文本。

-Path

它用于指定要搜索的路径以及通配符的使用。

-Pattern

该参数用于查找每行中作为模式的匹配项。

-Quiet

此参数用于获取布尔值(如 True 或 False)的输出。

-Raw

它用于仅查看匹配对象而不是匹配信息。

-SimpleMatch

该参数用于指定简单匹配而不是正则表达式匹配。

FINDSTR 和 Select-String 之间的区别

FINDSTR 是 PowerShell 时代之前的可执行文件,用于搜索文件中的文本和字符串。 Select-String 是一个 PowerShell cmdlet,用于搜索文件中的文本和模式。与 FINDSTR 相比,Select-String 是更强大、更复杂的 cmdlet,可显示有关匹配的大量信息。

PowerShell 中的 grep 等价物是什么?

Select-String 是 Windows 上可用的 grep 的 PowerShell 等效项。它的功能与 grep 的功能相同,并且根据我们在语法中使用的参数提供有关匹配的详细信息。

FINDSTR 是否适用于 Word 文件?

是的,FINDSTR 适用于 Word 文件。但即使您输入的字符串存在于文件中,它也无法显示查找匹配项。它可以为您提供 .doc 格式的二进制文件结果,但由于某些未知的技术原因而不是 .docx 格式。

相关阅读: