当前位置:网站首页>【批處理DOS-CMD命令-匯總和小結】-字符串搜索、查找、篩選命令(find、findstr),Find和findstr的區別和辨析
【批處理DOS-CMD命令-匯總和小結】-字符串搜索、查找、篩選命令(find、findstr),Find和findstr的區別和辨析
2022-07-07 00:49:00 【dssgresadfsrgre】
一、find命令
1.1 打印find命令的幫助信息
執行命令【find /?】。
C:\Users\Administrator>find /?
在文件中搜索字符串。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
/V 顯示所有未包含指定字符串的行。
/C 僅顯示包含字符串的行數。
/N 顯示行號。
/I 搜索字符串時忽略大小寫。
/OFF[LINE] 不要跳過具有脫機屬性集的文件。
"string" 指定要搜索的文本字符串。
[drive:][path]filename
指定要搜索的文件。
如果沒有指定路徑,FIND 將搜索在提示符處鍵入
的文本或者由另一命令產生的文本。
1.2 字段string和filepath的語法
find 命令不能識別回車。當使用 find 在包含回車的文件中搜索文本時,必須將搜索字符串限制在可以在兩個回車之間找到的文本,也就是不能被回車中斷的字符串。例如,“tax”與“file”之間出現回車時,find 不會報告找到“tax file”字符串。換句話說,find僅僅針對比特於同一行上的字符串,不能查找跨行的字符塊。
要查找將文字包含在引號之內的字符串,必須首先將整個字符串用引號圍繞起來。其次,每個包含在字符串內的引號必須使用兩個雙引號括起來。要在 Report.doc中查找【abc"def"gh】,請鍵入:
find "abc""def""gh" report.doc
如果想要多重條件篩選,在文本文件中查找既包括字符串A又包括字符串B的行,可借助管道符,具體見本文的1.8小節。
字段string不支持通配符,如果想要搜索包括字符串A或字符串B的行,可以借助for命令。
for %f in (abc def) do find "%f" test.txt
字段filepath支持通配符,至於為啥網上有些文章說不支持,需要搭配for命令語句使用,我也不是很清楚,可能是因為cmd版本迭代的緣故吧!
詳見1.3.2小節查看字段filepath的通配符用法。
1.3 最基本用法:find "string" filepath
在某文本文件,或一堆文本文件中搜索一個字符串所在行的信息。
1.3.1 在單個文件中查找英文字符
例如,查找tool.txt文本文件中存在字符串【AA】的行。
執行命令【find "AA" tool.txt】,結果如下所示(如果文本文件中有中文,需要用命令chcp 65001先切換至utf8編碼,不然結果顯示亂碼)。
1.3.2 在多個文件中查找中文字符
在决定要查找中文字符前,一定要用chcp 65001開啟utf8編碼,不然搜索不到。
命令 find的string字段不支持通配符,也即如果執行【find "A?" tool.txt】,最後不會顯示任何行中有"A?",因為把問號當成普通問號處理了。
但是filepath字段支持通配符,也即如果執行 【find "朝朝" tool*.txt】,最後會顯示所有以tool開頭命名的txt文件。
1.4 不區分大小寫——參數/i
默認是區分大小寫的,當加了參數/i後就不區分了。
在上面1.2節的文本文件基礎上,執行命令【find /i "aa" "tool?.txt"】,結果如下。
參數/i可以和其他任何參數配合,不會有邏輯上的矛盾與沖突。
1.5 搜索不包括指定字符串的行——參數/v
默認搜索包括指定字符串的行,當加了參數/v後就反向搜索。
在上面1.2節的文本文件基礎上,執行命令【find /v "AA" "tool.txt"】,結果如下。
參數/v可以和其他任何參數配合,不會有邏輯上的矛盾與沖突。
1.6 添加行標號——參數/n
默認不標號,僅僅顯示所在行的文本內容,當加了參數/n後就額外標號(不是僅標號)。
在上面1.2節的文本文件基礎上,執行命令【find /n "AA" "tool.txt"】,結果如下。
參數/n可以和其他任何參數配合,不會有邏輯上的矛盾與沖突。
1.7 僅顯示目標行的數目——參數/c
默認僅僅顯示所在行的文本內容,當加了參數/c後就僅顯示存在字符串的行數量。
c是count的簡寫,錶示計數。
在上面1.2節的文本文件基礎上,執行命令【find /c "AA" "tool.txt"】,結果如下。
參數/c除了和參數/n矛盾,其他都不矛盾。如果實在有些人寫的時候把這兩個參數全部添加上去了,不管順序如何,最終只有參數/c會生效。
幫助信息對參數/c的文字描述有毛病,更准確來說應該是【僅顯示行數】,因為它可以和參數/v一起搭配,錶示【僅顯示未包括字符串的行數】,執行【find /c /v "AA" "tool.txt"】的結果如下。
1.8 配合管道命令(管道符)使用
管道符左邊語句的輸出結果,會輸入給右邊語句。
find支持同管道符配合使用,如果管道符右邊是find語句,那麼左邊的輸出字符串文本就會作為右邊find語句的查找對象。
find "abc" test.txt | find "xyz"
上面這句錶示在test.txt中查找同時存在字符串abc和字符串xyz的行,即實現多重過濾。
1.9 作為實時篩選器搜索在線鍵入字符串
關於實時篩選器,在1.1小節打印的幫助信息如是所言↓↓↓↓
如果沒有指定路徑,FIND 將搜索在提示符處鍵入的文本或者由另一命令產生的文本。
也就是說,不給文本文件路徑、也不連接在管道符的終端,就只能用鍵盤實時輸入的字符串行了。
執行命令【find "abc"】,光標換行在頭端閃爍。
隨便打一個沒有abc的字符串行——【123456789】,然後回車。
在打一個有abc的字符串行——【I miss you, abc!】,然後回車。
可以發現,這一行字符串又原封不動地被輸出,說明它通過了“嚴峻的考驗”,哈哈哈哈...
進入之後,如何退出篩選器呢?用快捷鍵【ctrl+c】,命令【exit】不能退出。
二、findstr命令
findstr命令比find命令還要强大,因為它還支持正則錶達式,稱得上“强者中的强者”。
2.1 打印findstr命令的幫助信息
C:\Users\Administrator>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 常見錶達法的詳細情况,請見聯機命令參考。
(1)對/d:dir的補充說明,原幫助信息不太直觀,舉個例子【/d:dir1;dir2;dir3】。
(2)對參數/r的補充說明,現在默認是可以不加,不加string也會被識別成正則錶達式(一般錶達式)的。可能原先是只有加了這個參數字段strings才算是正則錶達式,而改版之後這個參數還留著。屬於曆史遺留問題。
2.2 字段strings和參數/r、參數/g:file
2.2.1 字段strings和參數/c:string
字段strings是用來指定搜索字符串的,不知道大家注沒注意到這個單詞是複數形式?
其實這意味著字段strings允許包括多個字符串,各個字符串之間用空格劃分開,例如【abc def ghi】,就是分別搜索【abc】、【def】、【ghi】,對於某一行只要搜到了其中之一,就會通過。
如果字段strings只有一個字符串(沒有空格、也沒有特殊符號), 就可以不加引號。
如果字段strings是由空格分隔的多個字符串,或者單個字符串中有特殊符號(比如&),就需要加引號。
而參數/c:string的名詞形式是單數,這也意味著一旦加了參數/c,就只能搜索單個字符串,具體詳見本文的2.4.2小節。
字段strings和參數/c:string,都支持正則錶達式(通配符更不在話下),詳見下一章節。
2.2.2 正則錶達式和參數/r
在findstr命令語句中,支持的典型正則錶達式規則如下:
. 通配符: 任何字符
* 重複: 以前字符或類出現零或零以上次數
^ 行比特置: 行的開始
$ 行比特置: 行的終點
[class] 字符類: 任何在字符集中的字符
[^class] 補字符類: 任何不在字符集中的字符
[x-y] 範圍: 在指定範圍內的任何字符
\x Escape: 元字符 x 的文字用法
\<xyz 字比特置: 字的開始
xyz\> 字比特置: 字的結束
上面這10個符號是“元字符”,是在正則錶達式語法中具有特殊含義 (運算符或分隔符) 的符號。
(普通的)“文本字符”是在正則錶達式語法中沒有特殊含義的字符,是匹配字符串的的基本項。 例如,26個字母和10個數字都是原義字符(文本字符)。
(1)通配符和重複符(.、*)
【.】號是通配符,代錶一個任意字符。
【*】號是重複符,在正則錶達式中不是代錶任意字符,而是左側字符或者錶達式的重複次數,【*】號錶示重複的次數為零次或者多次。
【.*】錶示任意字符,可以是零個字符,也可是多個。
下面給出通配符和重複符的經典應用案例。
僅有【.】號時,【.】號的數量錶示匹配行的最小字符數量,例如【.】匹配的是有至少一個字符的行,而【.....】匹配的是至少有5個字符的行。
從文件tool.txt中查找任意字符,不包括空字符或空行,可以執行命令【findstr . tool.txt】或【findstr "." tool.txt】。
從文件tool.txt中查找任意字符,包括空字符和空行,可以執行命令【findstr .* tool.txt】或【findstr ".*" tool.txt】。
(2)查找字符集中的任意字符([class]、[^class]、[x-y])
class形式錶示可離散獨立地分列,例如【aef】;减號錶示取ASCII編碼在左右符號之間的字符,例如[e-h]錶示取從e到h之間的字母(不區分大小寫);而^錶示後面字符集的補集。
一般只能用ASCII字符(不能是中文字符);另外對於某些特殊字符,需要轉義。
對於英文引號【"】,需要轉義;如果是單個英文引號,就寫成【"""】,也即["""]。
對於减號【-】不需要轉義,直接寫成離散形式就行,比如[-a-z]錶示匹配任意字母外加一個减號。
如果在字符集內插入通配符【.】和重複符【*】,將會把【.】和【*】視為普通字符,沒有通配和重複的含義。
從文件tool.txt中查找包括a、b、c、e、z、y字母的字符串或行,可執行命令【findstr "[abcezy]" tool.txt】。
從文件tool.txt中屏蔽不符合規則的字符串或行,如果是純數字的字符串或者行便過濾掉不顯示(例如237623),而如果是帶有非數字字符就保留(比如34yht888),可執行命令【findstr "[^0-9]" tool.txt】。
從文件tool.txt中查找小寫字符a-f,l-z的字符串,也即不包含g h I j k這幾個字母,可執行命令【findstr "[a-fl-z]" tool.txt】。
從文件tool.txt中查找包括任意數字的字符串或行,可執行命令【findstr "[0-9]" tool.txt】。
從文件tool.txt中查找包括任意字母的字符串或行,可執行命令【findstr "[a-z]" tool.txt】,注意不需要寫成【findstr "[a-zA-Z]" tool.txt】,因為如果是x-y的形式,默認就不區分大小寫了。而如果是類似[abc]這種離散的形式,還是區分大小寫的。
從文件tool.txt中匹配由兩個字符集組合而成的諸如MahY , MbiY, MahY等…..,可執行命令【findstr "M[abc][hig]Y" tool.txt】。
(3)行首行尾和詞頭詞尾(^、$、\<、\>)
在幫助信息中,“字”對應英文原型word,因此中文翻譯“字還可替換成“單詞”,在小標題中直接用詞頭詞尾增强直觀性。
行錨符是^和$,分別對應行頭和行尾,詞錨符是\<和\>,分別對應詞頭和詞尾。
行的頭與尾,也即起始比特置和終止比特置,理解起來很容易。
下面舉一個例子,幫助大家理解行的頭與尾錨符。
^錶示行頭,"^step"僅匹配"step hello world"中的第一個單詞;$錶示行尾,"step$"僅匹配 "hello world step"中最後一個單詞。
下面舉一個例子,幫助大家理解詞的頭與尾錨符。
文本文件【tool.txt】裏有兩行為"abcd" 和 "abcd e"。
執行命令【findstr "cd\>" tool.txt】,兩行都會出現,只要是連在一起(沒被空格開)的並以cd結尾的(不要求是行尾)都滿足,相當於以cd結尾的單詞所在行都會被查出來。
這兩個行首行尾錨符,常常用來篩選出純數字或純字母。
譬如想要篩選tool.txt文本文件中的純數字字符串或行,可執行命令【findstr "^[0-9]*$" tool.txt】,
例如【675758345】會被保留,而【46752kkjl4】就被過濾掉了。
譬如想要篩選tool.txt文本文件中的純字母字符串或行,可執行命令【findstr "^[a-z]*$" tool.txt】,
例如【hythdfgdgiuf】保留,而【956sdsftgruylk】、【1321argad13】就被過濾掉。
行首行尾錨符【^、$】配合重複符【*】,實現匹配多個數量符號的字符串或行
如果在搜索字符串裏沒有【*】號,也就是說不重複左側的搜索條件。
例如【^[0-9]】匹配的是行頭是數字的任意字符串或行,而【[a-zA-Z]$】匹配的是行尾是字母的任意字符串或行。
而如果行首行尾錨符同時添加,也即行首行尾同時受限制,那麼有幾個中括號就對應有幾個字符。例如【^[0-9]$】僅會匹配到只有一個數字的行,而【^[0-9][A-Za-z]$】僅會匹配到第一個字符是數字、第二個字符是字母的行。
(4)元字符的轉義——/x(escape錶示轉義)
上面我們提到元字符包括通配符【.】、重複符【*】、任一符【[】和【]】、連續符【-】、補集符【^】、行首行尾錨符【^】和【$】、詞首詞尾符【/<】和【>/】。
如果把元字符比作x,那麼如果我們要匹配元字符的普通文本形式,可以用【/x】;例如對連續符【-】的轉義,對應的是【/-】。
另外在本文會囉嗦很多次的一點——對於雙引號的轉義,用雙引號,也即【"】需轉義成【"""】,【abc"def】需寫成【abc"""def】。
對於正斜杠符【/】的轉義,同雙引號一樣,用它自身來解决,也即【/】需轉義成【//】。
2.2.3 字符串批量搜索的參數/g:filepath
參數/g後的filepath是一個文本文件,其中每一行代錶一個搜索字符串。
由tool.txt文件稍加改變,生成goal.txt文件。
而後,再執行命令【findstr /g:goal.txt tool.txt】,結果如下,最後搜到兩個匹配行。
2.3 字段filepath和參數/d:dir1;dir2、參數/f:file、參數/s
2.3.1 搜索比特置——字段filepath
本節的filepath指的就是幫助信息中的字段[[drive:][path]filename[ ...]],屬實簡化版本了!
字段strings指定了搜索字符串,也即搜什麼的問題;而字段filepath指定了搜索比特置,也即在哪裏搜的問題。
既可以采用絕對路徑,也可以采用相對路徑。
不僅可以搜索單個文本文件,也可搜索多個文本文件,此時不同文件的路徑字符串間需用空格劃開。
另外filepath也支持通配符【*】和通配符【?】。
例如執行命令【findstr /r "abc dedgth.t" tool?.txt】,最後結果中包括了tool.txt和too1.txt的信息。
再比如執行命令【findstr /r "abc" *.*】或【findstr /r "abc" "*.*"】,會在當前目錄所有文件中搜索是否有字符串abc。
2.3.2 在一個或多個目錄中搜索——參數/d:dir1 dir2 dir3
這個參數的使用方法,按幫助信息裏寫的去編寫代碼,理應很簡單就可以實現,但是最後卻無法有效地看到預期效果。
先執行命令【findstr /r /s "AA" *.*】,查找當前目錄及其所有子目錄下的文件中含有AA的行。
再執行命令【findstr /r /s "AA" /d:dir1;dir2】, 卻報錯無法找到目錄。
改成絕對目錄,執行【findstr /r "AA" /d:D:\D-desktop\test5\dir1;D:\D-desktop\test5\dir2】,也還是不行。
---------------------更新分割線----------------------------
經過一番探索,本人終於領會了。
原來參數/d:dir1;dir2;dir3不能放在strings的後面;原來即使添加了參數/d:dir1;dir2;dir3,也必須要給出filepath的匹配規則。
因此其實參數/d:dir1;dir2;dir3給出的只是起始搜索目錄,當添加這個參數時,默認以CMD當前目錄作為起始搜索目錄;起始搜索目錄指的是子目錄的“起點”。
而之所以還要指定filepath匹配規則,是因為避免目錄內存在太多非文本文件,這樣搜索時極其耗時耗力,另外也可提高了匹配規則的多樣性和匹配的精准程度。
執行命令【findstr /r /d:dir1;dir2;dir3 "AA" *.*】後,結果如下,非常成功!!!
2.3.3 借文本文件提供的路徑(目錄)來搜索——參數/f:file
新建一個文本文件,內容如下,前3行都是文件的相對路徑,最後一行是一個相對目錄路徑
接著,指定的文件路徑我們不用管,但是目錄路徑的話是不是像2.3.2小節一樣需要在後面指定匹配規則呢?
不妨試試,我們執行命令【findstr /r /f:paths.txt "AA" "*.*"】,結果如下
而如果不指定匹配規則,執行命令 【findstr /r /f:paths.txt "AA"】,最後就沒有當前目錄的搜索結果了。
後來,我反思自己,是不是參數/f:filepath不支持目錄路徑呢?回過頭看幫助信息,“讀文件列錶”而不是讀文件夾列錶,所以官方的意思應該也是不支持在裏面讀文件夾的。
/F:file 從指定文件讀文件列錶 (/ 代錶控制臺)。
2.3.4 搜索範圍縱向深入,擴展至子目錄——參數/s
如果不添加參數/s,執行命令【findstr /r "AA" *.*】,只能查找當前目錄下所有符合規則的文件。
先執行命令【findstr /r /s "AA" *.*】,查找當前目錄及其所有子目錄下的文件中含有AA的行。
2.4 搜索方式參數/b、/e、/c、/l、/i、/x、/v、
2.4.1 行首行尾定比特參數——參數/b、/e
本節的定比特參數的功能實際上和正則錶達式的元字符【^】、【$】功能完全相同,都是將搜索字符串只能緊靠行首或者行尾進行搜索和匹配。
例如加了參數/b,就必須把搜索字符串放在行首匹配,而某行內容是【rfgwercd fwerfreg】,我們可以用命令【findstr /l "fwerf" tool.txt】查找到這行,但是不能用命令【findstr /l /b "fwerf" tool.txt】查到。
同理,參數/e作為行尾定比特參數,執行機制也很簡單。
參數/b和參數/e可以同時添加,因為並不沖突,一個搜索字符串既可以貼近行頭也可以作為行尾。
2.4.2 搜索字符串帶空格時,需添加參數/c
如果搜索字符串有空格,比如說【A B C】,那麼cmd程序默認情况下會在搜索源中依次搜索字符串【A】、【B】、【C】,只要發現有其中一個符合規則,就會通過。
但是若我們要搜索的字符串本身帶有空格, 換句話說需要連帶空格一起搜索呢?
就需要用到參數/c了,並且需要寫成/c:string的形式。我們可以把c看成connect的縮寫,空格兩邊字符串連接成一個整體,這樣記憶參數/c更加牢固。
以命令【findstr /c:"ab c" tool.txt】為例,最後搜索到的應該是確實包括【ab c】的字符串或行;而如果不加參數/c,寫成【findstr "ab c" tool.txt】,那麼類似【abasdref】、【cdsagrgtr】的字符串或行也會被通過。
2.4.3 將字符串當做單詞進行搜索——參數/l
這個參數我並沒有搞明白怎麼用。
如果搜索字符串是一個單詞的部分或全部,而這個單詞在某一行出現,那這一行照理的確是被通過的。
而如果搜索字符串中有空格,也即存在多個單詞,這時候會對其進行分別搜索,只要某一行中字符串又正好有這多個單詞之一(部分匹配或完全匹配),就會被通過。
參數/l可不可以與參數/c搭配?試試執行命令【findstr /l /c:"wercd fwerf" tool.txt】,執行結果如下。也是會通過,這一點我特別納悶,因為既然按單詞來搜索,一個單詞不可能有空格,那搜索字符串中有空格又被參數/c限制成一個整體,最後反而要把它當做一個單詞,豈不荒謬?
從上面的測試中,我看不到任何添加參數/l的意義,感覺加不加都一樣。
2.4.4 整行匹配,行首行尾貼近——參數/x
什麼叫整行匹配?也即要搜索的字符串占一行,而不是部分。
由此也易得,這種匹配模式其實和行首行尾匹配相同,也即下面3條命令的執行結果完全一樣。
findstr /e /b "fg" tool.txt
findstr /x "fg" tool.txt
findstr "^fg$" tool.txt
2.4.5 不區分大小寫——參數/i
findstr命令語句默認區分大小寫,如果想要不區分,可以加參數/i。
參數i是ignore的簡寫,錶示忽略,忽略掉大小寫問題,不就是不區分大小寫嗎?
執行命令【findstr /i "aa" tool.txt】,最後搜出來的結果中有AA。
2.4.6 搜索目標字符串的補集——參數/v
默認是搜什麼,輸出(顯示)什麼,此時是選擇要什麼;但是有一種情况是目標不能輸出(顯示),此時是選擇不要什麼。
添加參數/v,執行命令【findstr /v "AA" tool.txt】,那些帶有AA字符串的行都會被丟弃。
2.5 顯示選項參數/m、/n、/o
顯示選項參數/m、/n、/o只是改變顯示的樣式,不改變文本文件的內容。
這三個參數不與其他任何參數有沖突;但是參數/m和參數/n、參數/o有沖突,因為只顯示文件名代錶不能顯示字符串所在行序號、也不能顯示字符串偏移值。
參數/m錶示僅顯示文件名,
參數/n錶示顯示行序號,
參數/o錶示顯示目標字符串離文件開頭的偏移值(偏移字節數,而非偏移字符數)。
對於ASCII字符,一個字符就是一個字節(例如空格),不可見的回車符、換行符占用兩個字節,但是對於中文符號或漢字,一個漢字對應2-4個字節。
三、find命令和findstr命令的區別
3.1 find命令支持統計總行數
find命令支持參數/c(僅顯示匹配行數),可以對符合規則的行進行數量上的統計。
例如【find /c "A" tool.txt】可以統計test.txt中含有字符串abc的總行數,而findstr命令則沒有直接提供該功能,需要配合for語句才能實現。
findstr命令語句的參數/c功能不是計數(count),而是連接(connect) ;參數/c後面跟的string允許存在空格,而不會將其當做兩個字符串。
3.2 find命令支持查找Unicode字符
一般來說除了字母數字這些能與ASCII兼容的字符,某一個國家專用的語言文字(比如中文簡體、日本語、韓語)普遍用Utf8編碼,所以要想查除了ASCII編碼範圍外的字符,就需要用find命令。
find能查"又豈",但是findstr查不出來。
如果你想要搜索unicode字符,並且想要類似findstr命令的强大功能,可以下載一個第三方程序——GNU Grep for windows,詳見下載官網。
3.3 find命令支持過濾特殊字符
本節的觀點來自網上,大概是2012年很流行;不知道為何我實現不了,可能是cmd命令有所更新?廢話不多說,引述一下他們的觀點,給各比特觀眾老爺下盤陳年醃菜。
find可以過濾某些特殊字符,而findstr則不行。
比如,我們在使用【fsutil fsinfo drives】語句查詢磁盤分區的時候,如果想讓盤符分行顯示而不是顯示在同一行上的時 候(在用for語句提取盤符的時候很有用),find可以大顯身手,而findstr只能幹瞪眼了。
具體代碼為 :【fsutil fsinfo drives|find /v ""】,輸出結果如下。
如果改成findstr,就會報錯。
雖然find結果也沒顯示成多行,但是findstr結果都沒有。 可能2012年的網友說的優勢就是這種意思吧?
3.4 findstr命令的string字段支持通配符
在搜索的字符串中,find不能使用通配符 (* 和 ?) 。
若要使用通配符和 regex 模式搜索字符串,只能使用findstr命令,或者下載第三方程序grep。
3.5 find命令無法讀取備用數據流
find命令無法讀取備用數據流。
若要在備用數據流中搜索,請使用 findstr、more或for /f命令。
上面這個引用,來自微軟官網對find命令的注釋。
至今我還是不懂備用數據流啥意思?英文名稱是alternate data streams。
3.6 find和findstr命令都支持退出碼(錯誤碼)
find和findstr命令的退出代碼一共3種,每一種代錶不同的搜索結果。
退出代碼 | 說明 |
---|---|
0 | 找到搜索的字符串 |
1 | 找不到搜索的字符串 |
2 | 找不到搜索的文件或指定了無效的命令行開關 |
findstr命令
find命令
边栏推荐
- Sword finger offer 26 Substructure of tree
- 用tkinter做一个简单图形界面
- 【批处理DOS-CMD命令-汇总和小结】-字符串搜索、查找、筛选命令(find、findstr),Find和findstr的区别和辨析
- Use mujoco to simulate Cassie robot
- Configuring OSPF basic functions for Huawei devices
- JS+SVG爱心扩散动画js特效
- Common shortcuts to idea
- System activity monitor ISTAT menus 6.61 (1185) Chinese repair
- [daily problem insight] prefix and -- count the number of fertile pyramids in the farm
- Data sharing of the 835 postgraduate entrance examination of software engineering in Hainan University in 23
猜你喜欢
Win10 startup error, press F9 to enter how to repair?
AI超清修复出黄家驹眼里的光、LeCun大佬《深度学习》课程生还报告、绝美画作只需一行代码、AI最新论文 | ShowMeAI资讯日报 #07.06
Article management system based on SSM framework
[software reverse automation] complete collection of reverse tools
Amazon MemoryDB for Redis 和 Amazon ElastiCache for Redis 的内存优化
一图看懂对程序员的误解:西方程序员眼中的中国程序员
alexnet实验偶遇:loss nan, train acc 0.100, test acc 0.100情况
Data sharing of the 835 postgraduate entrance examination of software engineering in Hainan University in 23
How to set encoding in idea
【vulnhub】presidential1
随机推荐
37頁數字鄉村振興智慧農業整體規劃建設方案
深度学习之数据处理
Attention SLAM:一種從人類注意中學習的視覺單目SLAM
【批处理DOS-CMD命令-汇总和小结】-字符串搜索、查找、筛选命令(find、findstr),Find和findstr的区别和辨析
[daily problem insight] prefix and -- count the number of fertile pyramids in the farm
If the college entrance examination goes well, I'm already graying out at the construction site at the moment
Basic information of mujoco
MySQL learning notes (mind map)
PXE server configuration
接口(接口相关含义,区别抽象类,接口回调)
Js+svg love diffusion animation JS special effects
37页数字乡村振兴智慧农业整体规划建设方案
On February 19, 2021ccf award ceremony will be held, "why in Hengdian?"
学习光线跟踪一样的自3D表征Ego3RT
【批处理DOS-CMD命令-汇总和小结】-查看或修改文件属性(ATTRIB),查看、修改文件关联类型(assoc、ftype)
Notes of training courses selected by Massey school
Leecode brush question record sword finger offer 56 - ii Number of occurrences of numbers in the array II
Understand the misunderstanding of programmers: Chinese programmers in the eyes of Western programmers
stm32F407-------DAC数模转换
C9高校,博士生一作发Nature!