DOS/BAT

关注公众号 jb51net

关闭
首页 > 脚本专栏 > DOS/BAT > cmd下查找字符

windows find findstr命令(cmd查找文档中的特定字符)

作者:返回主页刘军军

find 命令用于查找文档中的特定字符和数字及行号, 例如我们在阅读文档时, 使用的快捷键 Ctrl + F 来查找是一个效果, 经过 find 查找的字符也可以重定向到一个文本文档里面去, 提取特定的字符, 来进行文档的整合

find 命令用于查找文档中的特定字符和数字及行号, 例如我们在阅读文档时, 使用的快捷键 Ctrl + F 来查找是一个效果, 经过 find 查找的字符也可以重定向到一个文本文档里面去, 提取特定的字符, 来进行文档的整合。

find 命令好像不支持正则,加强版可使用 findstr

find 命令

在 Windows 系统中,find命令用于在文件中搜索指定的字符串。以下是find命令的详细用法:

基本语法

find [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]

参数说明

参数说明
/V显示所有未包含指定字符串的行。
/C仅显示包含字符串的行数。
/N显示行号。
/I搜索字符串时忽略大小写。
/OFF[LINE]不要跳过具有脱机属性集的文件。
“string”指定要搜索的文本字符串。
[drive:][path]filename指定要搜索的文件。

示例

查找当前目录下所有.txt文件中包含 “hello” 的行,并显示行号:

find /N "hello" *.txt

统计指定文件中包含 “world” 的行数:

find /C "world" myfile.txt

在多个文件中查找不包含 “error” 的行,并忽略大小写:

find /V /I "error" file1.txt file2.txt file3.txt

注意事项

此外,Windows 系统中还有一些其他工具和命令也可以用于文件搜索和文本处理,如findstr命令,它提供了更强大的搜索功能,支持正则表达式等。

案例

E:\>netstat -ano|find "4664"
  TCP    127.0.0.1:21440        0.0.0.0:0              LISTENING       4664
  TCP    127.0.0.1:21441        0.0.0.0:0              LISTENING       4664
  TCP    127.0.0.1:21441        127.0.0.1:49775        ESTABLISHED     4664

查看指定字符并忽略大小写

E:\>netstat -ano|find /I "listening"
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1084
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       6276
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:902            0.0.0.0:0              LISTENING       6152
  TCP    0.0.0.0:912            0.0.0.0:0              LISTENING       6152
  TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING       1260
  TCP    0.0.0.0:5357           0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:49664          0.0.0.0:0              LISTENING       908
  TCP    0.0.0.0:49665          0.0.0.0:0              LISTENING       768
  TCP    0.0.0.0:49666          0.0.0.0:0              LISTENING       1528

统计包含指定字符串的行数

E:\>netstat -ano|find /I /C "listening"
44

显示行号

E:\>netstat -ano|find /N "4664"
[26]  TCP    127.0.0.1:21440        0.0.0.0:0              LISTENING       4664
[27]  TCP    127.0.0.1:21441        0.0.0.0:0              LISTENING       4664
[28]  TCP    127.0.0.1:21441        127.0.0.1:49775        ESTABLISHED     4664

查找结果反选

E:\>netstat -ano|find /I /V "listening"

活动连接

  协议  本地地址          外部地址        状态           PID
  TCP    127.0.0.1:21441        127.0.0.1:49775        ESTABLISHED     4664
  TCP    127.0.0.1:49775        127.0.0.1:21441        ESTABLISHED     11660
  TCP    127.0.0.1:58769        127.0.0.1:58772        ESTABLISHED     4064
  TCP    127.0.0.1:58769        127.0.0.1:58773        ESTABLISHED     4064
  TCP    127.0.0.1:58769        127.0.0.1:58806        ESTABLISHED     4064
  TCP    127.0.0.1:58772        127.0.0.1:58769        ESTABLISHED     9388
  TCP    127.0.0.1:58773        127.0.0.1:58769        ESTABLISHED     10340
  TCP    127.0.0.1:58806        127.0.0.1:58769        ESTABLISHED     9388
  TCP    192.168.1.3:52970      221.204.58.54:443      CLOSE_WAIT      1960
  TCP    192.168.1.3:53285      221.204.17.1:443       CLOSE_WAIT      1960
  TCP    192.168.1.3:53303      120.131.13.30:443      CLOSE_WAIT      1960
  TCP    192.168.1.3:53575      139.196.142.30:443     ESTABLISHED     7484
  TCP    192.168.1.3:53611      139.196.142.30:443     TIME_WAIT       0
  TCP    192.168.1.3:53613      116.62.230.66:443      TIME_WAIT       0
........................................................................................

findstr 命令

findstr是window系统自带的命令,用途是查找指定的一个或多个文件文件中包含某些特定字符串的行,并将该行完整的信息打印出来,或者打印查询字符串所在的文件名。通过管道符与其他命令结合使用,其用途和用法都类似linux下的grep命令,用于查找过滤指定字符串。

用法:find [参数] [字符串] [磁盘:[目录]文件]
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[ ...]]

E:\>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 常见表达法的详细情况,请见联机命令参考。

参数说明

/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> 字位置: 字的结束

示例

在当前目录下的所有.txt文件中搜索包含字符串 “example” 的行,并显示行号:

findstr /N "example" *.txt

在指定文件test.txt中搜索以 “Hello” 开头的行:

findstr /B "Hello" test.txt

在当前目录及其子目录的所有文件中搜索不包含 “error” 的行:

findstr /S /V "error" *.*

搜索包含特定字符串且不区分大小写的行:

findstr /I "Windows" file.txt

findstr命令功能强大,在处理文本搜索任务时非常方便,特别是在需要批量处理文件或进行简单的文本筛选时,能大大提高工作效率。通过组合不同的参数,可以实现各种复杂的搜索需求。

查找包含字符串的行

测试文件 a.txt

aa123
bb234
cc345
E:\>more a.txt
aa123
bb234
cc345

E:\>findstr aa a.txt
aa123

查找包含字符串的行并忽略大小写

使用 /I 参数忽略大小写

测试文件 a.txt

aa123
bb234
cc345
AA111
BB222
CC333
E:\>more a.txt
aa123
bb234
cc345
AA111
BB222
CC333

E:\>findstr /I aa a.txt
aa123
AA111

多字符条件查找

除非参数有 /C 前缀,请使用空格隔开搜索字符串。

​ 例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中寻找 "hello" 或 "there"。'FINDSTR /C:"hello there" x.y' 文件 x.y 寻找 "hello there"。

测试文件 a.txt

aa 123
123
bb 234
cc 345
AA 111
BB 222
CC 333
E:\>more a.txt
aa 123
123
bb 234
cc 345
AA 111
BB 222
CC 333

E:\>findstr "aa 123" a.txt
aa 123
123

E:\>findstr /C:"aa 123" a.txt
aa 123

 使用正则查找字符串

使用 /R 参数 + 正则查找内容

测试文件 a.txt

aa 123
123
bb 234
cc 345
AA 111
BB 222
CC 333
AAAAA
BBBBB
CCCCC
E:\>findstr /R "^aa" a.txt
aa 123
E:\>findstr /R "22$" a.txt
BB 222
E:\>findstr /R "[1-9]" a.txt
aa 123
123
bb 234
cc 345
AA 111
BB 222
CC 333
E:\>findstr /R "[a-z]" a.txt
aa 123
bb 234
cc 345
AA 111
BB 222
CC 333
AAAAA
BBBBB
CCCCC

获取反选内容

使用 /V 参数

测试文件 a.txt

aa 123
123
bb 234
cc 345
AA 111
BB 222
CC 333
AAAAA
BBBBB
CCCCC
E:\>findstr /V "aa" a.txt
123
bb 234
cc 345
AA 111
BB 222
CC 333
AAAAA
BBBBB
CCCCC

到此这篇关于windows find findstr命令(cmd查找文档中的特定字符)的文章就介绍到这了,更多相关cmd下查找字符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

阅读全文