643
技術社區[雲棲]
Findstr 命令
博學,切問,近思--詹子知 (https://jameszhan.github.io)
和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/> 字位置: 字的結束
結合其他的命令,我們可以很輕鬆的完成我們經常要做的一些任務。
- 查找指定應用占用的網絡端口號
有的時候,我們經常有這種需求,當我們部署好一個服務之後,但有的時候去查配置又比較麻煩,或者這些端口配置數據是來源於動態配置,這個時候,使用下麵的方法,我們可以很方便地找出應用程序占用了哪些端口。//找出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 - 查找某些指定的端口號被哪些進程給占用
由於某些指定的服務必須在某些指定的端口給啟動,比如,我想在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端口。
最後更新:2017-04-02 06:51:24