findstr 命令详解

本文深入探讨了Windows下findstr命令的使用方法,包括如何在文件中寻找特定字符串、查找指定应用占用的网络端口号以及查找某些指定的端口号被哪些进程占用等实际应用场景。通过结合其他命令,实现高效文本内容查找。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

和Linux相比,对于命令行操作,Windows总是觉得有点力不从心。比如,有的时候我们想查找某些进程占用了哪些网络端口,有一些指定的网络端口又被哪些应用给占用,总是稍显有点麻烦,往往需要从一大串数据行中去目测,找出自己关心的一些信息。如果我们要从一大段数据行中,或者一大段文本中去找出我们所关心的一些数据行,Linux下grep可以很轻松地搞定这个任务,但在windows下恐怕就没有那么容易了。当然,你需要查找的数据在一个文本文档中,在Windows下用一些编辑器找出来还是很方便的,但如果我们的操作都是在命令行下面进行,估计大家就只能靠自己一行一行手动去寻找了。

还好,Windows下面还有一个findstr命令,有了这个命令,大家会发现,原来在Windows下面,文本内容的查找原来也是很方便的一件事情。下面我们先来看一看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/>    字位置: 字的结束

结合其他的命令,我们可以很轻松的完成我们经常要做的一些任务。

  1. 查找指定应用占用的网络端口号
    有的时候,我们经常有这种需求,当我们部署好一个服务之后,但有的时候去查配置又比较麻烦,或者这些端口配置数据是来源于动态配置,这个时候,使用下面的方法,我们可以很方便地找出应用程序占用了哪些端口。
//找出tomcat对应的进程ID, 在我的机器上,我是使用控制台的方式启动tomact的,所以它的进程名应该为java
tasklist | findstr java

//在我机器上的输出效果如下:
java.exe     2224     Console     1     130,540 K

//找出tomcat监听的所有端口信息
netstat -nao | findstr 2224

//在我机器上的输出效果如下:
TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       2224
TCP    0.0.0.0:8000           0.0.0.0:0              LISTENING       2224
TCP    0.0.0.0:8009           0.0.0.0:0              LISTENING       2224
TCP    127.0.0.1:8005         0.0.0.0:0              LISTENING       2224

2、查找某些指定的端口号被哪些进程给占用
由于某些指定的服务必须在某些指定的端口给启动,比如,我想在8086(图个吉利)端口启动我的webserver,但是很不巧,已经有一些进程把这个端口给占用了,这个时候我就无法再在8086端口启动我的webserver了,这个时候我们恐怕得花挺长的时间来找到这个进程(如果进程数很多的话),然后把它给结束掉,再启动我们的webserver,但是有了findstr之后,你会发现,找出这样的进程并把它杀死,原来是很轻而易举的事情。

//查找出占用8086端口进程的ID
netstat -nao | findstr 8086

//本机输出效果为:
  TCP    0.0.0.0:8086           0.0.0.0:0              LISTENING       804
//很显然,进程ID是804

//找出ID为804的进程名
tasklist | find 804

//本机输出效果为:
emule.exe                      804 Console                    1     82,068 K

//哈哈,原来 是emule占用了我的8086端口。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值