FINDSTR(高度な文字列検索)
find コマンドではシンプルな文字列検索しかできませんが、FINDSTR コマンドを使用すると、正規表現を使った高度なパターン検索が可能になります。
この記事では、FINDSTR コマンドの基本から正規表現、複数条件検索、パイプとの組み合わせまで、具体的なサンプルコードを交えて解説します。
FINDSTR の基本構文
FINDSTR [オプション] "検索文字列" [ファイル名]
基本的な使用例
ファイル内から特定の文字列を含む行を検索します。
findstr "error" log.txt
主要オプション
| オプション | 説明 |
|---|---|
/I | 大文字・小文字を区別しない |
/S | サブフォルダも再帰的に検索 |
/R | 正規表現として検索(既定値) |
/L | リテラル文字列として検索 |
/C:"文字列" | 検索文字列をスペース含めてそのまま検索 |
/V | 一致しない行を表示(除外検索) |
/N | 一致した行の行番号を表示 |
/M | 一致したファイル名のみ表示 |
/B | 行頭に一致するパターンを検索 |
/E | 行末に一致するパターンを検索 |
大文字・小文字を区別しない検索(/I)
findstr /I "warning" log.txt
Warning、WARNING、warning のいずれにも一致します。
スペースを含む文字列を検索する(/C:)
スペースを含む文字列を検索する場合は、/C: オプションを使用します。
findstr /C:"disk full" log.txt
/C: を使わずに findstr "disk full" log.txt
と記述すると、「disk」または「full」を含む行が検索されます(OR
検索になります)。スペースを含む文字列を正確に検索したい場合は /C: を使用してください。
一致しない行を表示する(/V)
/V オプションは、検索文字列に一致しない行を表示します。
findstr /V "^rem " script.cmd
行番号を表示する(/N)
findstr /N "TODO" main.cmd
正規表現を使った検索
FINDSTR は基本的な正規表現をサポートしています。
使用可能な正規表現
| 記号 | 意味 | 例 |
|---|---|---|
. | 任意の 1 文字 | h.t → hot, hat |
* | 直前の文字の 0 回以上の繰り返し | ab*c → ac, abc, abbc |
^ | 行頭 | ^echo |
$ | 行末 | error$ |
[abc] | 角括弧内のいずれか 1 文字 | [aeiou] → 母音 |
[a-z] | 範囲内のいずれか 1 文字 | [0-9] → 数字 |
[^abc] | 角括弧内の文字以外の 1 文字 | [^0-9] → 数字以外 |
\< | 単語の先頭 | \<the |
\> | 単語の末尾 | end\> |
正規表現の使用例
findstr /R "^echo" script.cmd
findstr /R "[0-9]" data.txt
findstr /R "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*" log.txt
FINDSTR の正規表現は非常に基本的なものです。+(1 回以上の繰り返し)、?(0 回または 1
回)、|(OR)、()(グループ化)といった拡張正規表現はサポートされていません。
複数のファイルを検索する
ワイルドカードで指定
findstr "error" *.txt
サブフォルダを含めて検索(/S)
findstr /S "TODO" *.cmd
一致したファイル名だけを表示する(/M)
findstr /M /S "password" *.txt
検索文字列を含むファイルの名前だけを表示します。内容は表示されません。
パイプと組み合わせる
他のコマンドの出力をフィルタリングする場合に、パイプ | と組み合わせて使用します。
tasklist | findstr /I "chrome"
netstat -an | findstr "443"
FIND コマンドとの使い分け
| 特徴 | FIND | FINDSTR |
|---|---|---|
| 正規表現 | × | ○ |
| 再帰検索 | × | ○(/S) |
| 複数条件検索 | × | ○ |
| 行番号表示 | × | ○(/N) |
| 大文字小文字無視 | ○(/I) | ○(/I) |
| 除外検索 | ○(/V) | ○(/V) |
シンプルな固定文字列の検索には find コマンドを、正規表現やサブフォルダ検索が必要な場合は
findstr を使用するのが適切です。
まとめ
この記事では、FINDSTR コマンドの使い方について解説しました。
FINDSTR は、正規表現による検索、サブフォルダの再帰検索、パイプとの連携など、FIND コマンドでは対応できない高度なテキスト検索を実現する強力なコマンドです。