В една друга тема писах малко за търсене в stdout с find в cmd, но инструмента тук превъзхожда в пъти подобно търсене. Предполагам всеки любител или системен администратор си мечтае за възможността да ползва скоростта и мощността на търсещите конзолни инструменти от UNIX/Mac/Linux. В Windows е малко сложно да си настроите системата да изпълнява подобните команди през промпта, просто защото е супер орязан, а инсталирането на UnxUtils си е малко досадно понякога, а и задължително си иска ъпдейта, особено за sed и grep! Все пак малко успокоение е търсенето в файлове или в pipe-режим командата findstr.Тази команда може да работи с едни първобитни RegEx-и, които са доста далече от популярните и модерни PCRE. Но и поосакатено това търсене може доста да ни помогне.
За пример, да потърсим с кои програми се асоциират html файловете в Windows система, като ще използваме pipe-линия:
ftype | findstr "html" |
При мен резултата от подобно търсене е:
accesshtmlfile="C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" Excelhtmlfile="C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" Excelhtmltemplate="C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" htmlfile="C:\Program Files\Internet Explorer\iexplore.exe" -nohome mhtmlfile="C:\Program Files\Internet Explorer\iexplore.exe" -nohome powerpointhtmlfile="C:\Program Files\Microsoft Office\OFFICE11\POWERPNT.EXE" powerpointhtmltemplate="C:\Program Files\Microsoft Office\OFFICE11\POWERPNT.EXE" wordhtmlfile="C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE" wordhtmltemplate="C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE" |
Командата разполага със следните възможности за търсене с регулярни изрази:
. | Wildcard: any character |
* | Repeat: zero or more occurrences of previous character or class |
^ | Line position: beginning of line |
$ | Line position: end of line |
[class] | Character class: any one character in set |
[^class] | Inverse class: any one character not in set |
[x-z] | Range: any characters within the specified range |
\x | Escape: literal use of metacharacter x |
\<xyz | Word position: beginning of word |
xyz\> | Word position: end of word |
Ключовете при стартиране на командата също могат да са полезни. За целта:
findstr /? |