findstr
搜尋檔案中的文字模式。
語法
findstr [/b] [/e] [/l | /r] [/s] [/i] [/x] [/v] [/n] [/m] [/o] [/p] [/f:<file>] [/c:<string>] [/g:<file>] [/d:<dirlist>] [/a:<colorattribute>] [/off[line]] <strings> [<drive>:][<path>]<filename>[ ...]
參數
參數 | 描述 |
---|---|
/b | 如果文字模式位於行首,則比對文字模式。 |
/e | 如果文字模式位於行尾,則比對文字模式。 |
/l | 按字面意思處理搜尋字串。 |
/r | 將搜尋字串作為規則運算式處理。 這是預設設定。 |
/s | 搜尋目前目錄和所有子目錄。 |
/i | 在搜尋字串時忽略字元大小寫。 |
/x | 列印完全相符的行。 |
/v | 只列印不包含相符項目的行。 |
/n | 列印符合之每一行的行號。 |
/m | 如果檔案包含相符項目,則只列印檔案名稱。 |
/o | 在每行相符行之前列印字元位移。 |
/p | 略過含有不可列印字元的檔案。 |
/off[line] | 不會略過已設定離線屬性的檔案。 |
/f:<file> |
從指定的檔案取得檔案清單。 |
/c:<string> |
使用指定的文字做為文字搜尋字串。 |
/g:<file> |
從指定的檔案取得搜尋字串。 |
/d:<dirlist> |
搜尋指定的目錄清單。 每個目錄都必須以分號分隔 (;),例如:dir1;dir2;dir3 。 |
/a:<colorattribute> |
用兩個十六進位數指定色彩屬性。 如需更多資訊,請輸入 color /? 。 |
<strings> |
指定要在 filename 中搜尋的文字。 必要。 |
[\<drive>:][<path>]<filename>[...] |
指定要搜尋的位置和檔案。 至少需要一個檔案名稱。 |
/? | 在命令提示字元顯示 [說明]。 |
備註
所有 findstr 命令列選項在命令字串中都必須位於 strings 和 filename 之前。
規則運算式同時使用常值字元和中繼字元來尋找文字模式,而不是精確的字元字串。
常值字元是規則運算式語法中沒有特殊意義的字元;相反地,它會比對該字元的出現次數。 例如,字母和數位是常值字元。
中繼字元是規則運算式語法中具有特殊意義的符號 (運算子或分隔符號)。
接受的中繼字元如下:
中繼字元 值 .
萬用字元 - 任何字元 *
重複 - 前一個字元或類別出現零次或更多次。 ^
起始行位置 - 行首。 $
結束行位置 - 行尾。 [class]
字元類別 - 集合中的任何一個字元。 [^class]
反向類別 - 任何不在集合中的字元。 [x-y]
範圍 - 指定範圍內的任何字元。 \x
逸出 - 中繼字元的常值使用。 \<string
起始字位置 - 字首。 string\>
結束字位置 - 字尾。 規則運算式語法中的特殊字元一起使用時最能發揮效用。 例如,使用萬用字元 (
.
) 和重複 (*
) 字元的組合來比對任何字元字串:.*
使用下列運算式做為大型運算式的一部分,來比對開頭為 b 且以 ing 結尾的任何字串:
b.*ing
若要在一組檔案中搜尋多個字串,您必須建立文字檔,將各個搜尋條件分別列在各行中。
除非引數前面加上 /c,否則使用空格來分隔多個搜尋字串。
範例
若要在檔案 x.y 中搜尋 hello 或 there,請輸入:
findstr hello there x.y
若要在檔案 x.y 中搜尋 hello there,請輸入:
findstr /c:"hello there" x.y
若要在檔案 proposal.txt 中尋找所有出現的 Windows 一字 (首字母為大寫字母 W),請輸入:
findstr Windows proposal.txt
若要搜尋目前目錄和所有子目錄中包含 Windows 一字的所有檔案 (不區分字母大小寫),請輸入:
findstr /s /i Windows *.*
若要尋找以 FOR 開頭且前面加上零或多個空格的所有行 (如計算機程式迴圈中),並顯示找到每個出現的行號,請輸入:
findstr /b /n /r /c:^ *FOR *.bas
若要在文字檔案中列出要搜尋的確切檔案,請使用檔案 stringlist.txt 中的搜尋條件搜尋 filelist.txt 中列出的檔案,然後將結果儲存在檔案results.out 中,請輸入:
findstr /g:stringlist.txt /f:filelist.txt > results.out
若要列出目前目錄和所有子目錄中包含 computer 一字的每個檔案 (不區分字母大小寫),請輸入:
findstr /s /i /m \<computer\> *.*
若要列出包含 Computer 一字與以 comp 開頭的任何其他單字 (例如:compliment 和 compete) 的每個檔案,請輸入:
findstr /s /i /m \<comp.* *.*