Windows の findstr (find) コマンドは、Linux の grep のようなものです。
たとえば、ファイル input.txt の中の aaa という文字列を含む行を検索するには以下のようにします。
C:\> findstr "aaa" input.txt
Windows なので、検索文字列はシングルクォーテーション ' ではなく、必ずダブルクォーテーション " で囲む必要があります。
findstr コマンドで空白を含んだ文字列を検索しようとすると、デフォルトでは空白で区切られたキーワード群の OR 検索が実行されてしまいます。
空白を含む文字列全体をひとつのキーワードとして検索するには /C オプションを付けて検索文字列を指定する必要があります。
C:\> findstr /C:"aaa bbb ccc" input.txt
C:\> findstr "aaa bbb ccc" input.txt
findstr はフィルタとして使えるので、検索結果をさらにパイプで findstr に渡してやることで、絞り込みながら検索していくことができます。
C:\> findstr "aaa" input.txt | findstr "bbb"
キーワードをスペースで区切ると、OR 条件でキーワードを検索することになります。
C:\> findstr "aaa bbb" input.txt
空白を含むキーワードの OR 検索を行いたい場合は、”/C” オプションによるリテラルを複数指定します。
C:\> findstr /C:"aaa bbb" /C:"ccc ddd" input.txt
/I)C:\> findstr /I "hoge" input.txt
findstr はオプションなしで検索キーワードを指定すると、そのキーワードは正規表現だとみなされます(/R オプションを指定した場合と同様)。
正規表現ではなく、単純な文字列リテラルとして検索したい場合は /L オプションを指定します。
"pattern" # 正規表現として検索
/R "pattern" # 正規表現として検索
/L "pattern" # 文字列リテラルとして検索
D:\> findstr "^function" *.php
ちなみに行頭にある文字列を検索するには、上記のように正規表現で検索する代わりに、/B オプションを利用することもできます。
D:\> findstr /B "function" *.php
findstr で使用できる正規表現については findstr /? を参照してください。
/C オプションとの関係前述のように、空白を含む検索キーワードを使用する場合は /C オプションを指定しますが、/C オプションだけを指定した場合は、そのキーワードは文字列リテラルとみなされます(/L オプションを指定した場合と同様)。
/C:"aaa bbb" # 空白を含む文字列リテラルとして検索
/L /C "aaa bbb" # 空白を含む文字列リテラルとして検索
/R /C:"aaa bbb" # 空白を含む正規表現として検索