Findstr 命令

和Linux相比,对于命令行操做,Windows老是以为有点力不从心。好比,有的时候咱们想查找某些进程占用了哪些网络端口,有一些指定的网络端口又被哪些应用给占用,老是稍显有点麻烦,每每须要从一大串数据行中去目测,找出本身关心的一些信息。若是咱们要从一大段数据行中,或者一大段文本中去找出咱们所关心的一些数据行,Linux下grep能够很轻松地搞定这个任务,但在windows下恐怕就没有那么容易了。固然,你须要查找的数据在一个文本文档中,在Windows下用一些编辑器找出来仍是很方便的,但若是咱们的操做都是在命令行下面进行,估计你们就只能靠本身一行一行手动去寻找了。html

 

还好,Windows下面还有一个findstr命令,有了这个命令,你们会发现,原来在Windows下面,文本内容的查找原来也是很方便的一件事情。下面咱们先来看一看findstr命令的使用方法。java

  1. 在文件中寻找字符串。  
  2.   
  3. FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]  
  4.         [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]  
  5.         strings [[drive:][path]filename[ ...]]  
  6.   
  7.   /B         在一行的开始配对模式。  
  8.   /E         在一行的结尾配对模式。  
  9.   /L         按字使用搜索字符串。  
  10.   /R         将搜索字符串做为通常表达式使用。  
  11.   /S         在当前目录和全部子目录中搜索匹配文件。  
  12.   /I         指定搜索不分大小写。  
  13.   /X         打印彻底匹配的行。  
  14.   /V         只打印不包含匹配的行。  
  15.   /N         在匹配的每行前打印行数。  
  16.   /M         若是文件含有匹配项,只打印其文件名。  
  17.   /O         在每一个匹配行前打印字符偏移量。  
  18.   /P         忽略有不可打印字符的文件。    
  19.   /OFF[LINE] 不跳过带有脱机属性集的文件。  
  20.   /A:attr    指定有十六进位数字的颜色属性。请见 "color /?"  
  21.   /F:file    从指定文件读文件列表 (/ 表明控制台)。  
  22.   /C:string  使用指定字符串做为文字搜索字符串。  
  23.   /G:file    从指定的文件得到搜索字符串。 (/ 表明控制台)。  
  24.   /D:dir     查找以分号为分隔符的目录列表  
  25.   strings    要查找的文字。  
  26.   [drive:][path]filename  
  27.              指定要查找的文件。  
  28.   
  29. 除非参数有 /C 前缀,请使用空格隔开搜索字符串。  
  30. 例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中寻找 "hello" 或  
  31. "there"。'FINDSTR /C:"hello there" x.y' 文件 x.y  寻找  
  32. "hello there"。  
  33.   
  34. 通常表达式的快速参考:  
  35.   .        通配符: 任何字符  
  36.   *        重复: 之前字符或类出现零或零以上次数  
  37.   ^        行位置: 行的开始  
  38.   $        行位置: 行的终点  
  39.   [class]  字符类: 任何在字符集中的字符  
  40.   [^class] 补字符类: 任何不在字符集中的字符  
  41.   [x-y]    范围: 在指定范围内的任何字符  
  42.   /x       Escape: 元字符 x 的文字用法  
  43.   /<xyz    字位置: 字的开始  
  44.   xyz/>    字位置: 字的结束  

web

 

结合其余的命令,咱们能够很轻松的完成咱们常常要作的一些任务。windows

  1. 查找指定应用占用的网络端口号
    有的时候,咱们常常有这种需求,当咱们部署好一个服务以后,但有的时候去查配置又比较麻烦,或者这些端口配置数据是来源于动态配置,这个时候,使用下面的方法,咱们能够很方便地找出应用程序占用了哪些端口。
    1. //找出tomcat对应的进程ID, 在个人机器上,我是使用控制台的方式启动tomact的,因此它的进程名应该为java  
    2. tasklist | findstr java  
    3.   
    4. //在我机器上的输出效果以下:  
    5. java.exe     2224     Console     1     130,540 K  
    6.   
    7. //找出tomcat监听的全部端口信息  
    8. netstat -nao | findstr 2224  
    9.   
    10. //在我机器上的输出效果以下:  
    11. TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       2224  
    12. TCP    0.0.0.0:8000           0.0.0.0:0              LISTENING       2224  
    13. TCP    0.0.0.0:8009           0.0.0.0:0              LISTENING       2224  
    14. TCP    127.0.0.1:8005         0.0.0.0:0              LISTENING       2224  
  2. 查找某些指定的端口号被哪些进程给占用
    因为某些指定的服务必须在某些指定的端口给启动,好比,我想在8086(图个吉利)端口启动个人webserver,可是很不巧,已经有一些进程把这个端口给占用了,这个时候我就没法再在8086端口启动个人webserver了,这个时候咱们恐怕得花挺长的时间来找到这个进程(若是进程数不少的话),而后把它给结束掉,再启动咱们的webserver,可是有了findstr以后,你会发现,找出这样的进程并把它杀死,原来是很垂手可得的事情。
    1. //查找出占用8086端口进程的ID  
    2. netstat -nao | findstr 8086  
    3.   
    4. //本机输出效果为:  
    5.   TCP    0.0.0.0:8086           0.0.0.0:0              LISTENING       804  
    6. //很显然,进程ID是804  
    7.   
    8. //找出ID为804的进程名  
    9. tasklist | find 804  
    10.   
    11. //本机输出效果为:  
    12. emule.exe                      804 Console                    1     82,068 K  
    13.   
    14. //哈哈,原来 是emule占用了个人8086端口。  
相关文章
相关标签/搜索