FINDSTR(高度な文字列検索)

にメンテナンス済み

find コマンドではシンプルな文字列検索しかできませんが、FINDSTR コマンドを使用すると、正規表現を使った高度なパターン検索が可能になります。

この記事では、FINDSTR コマンドの基本から正規表現、複数条件検索、パイプとの組み合わせまで、具体的なサンプルコードを交えて解説します。

FINDSTR の基本構文

FINDSTR [オプション] "検索文字列" [ファイル名]

基本的な使用例

ファイル内から特定の文字列を含む行を検索します。

findstr "error" log.txt
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>findstr "error" log.txt
2026-03-10 10:15:32 error: ファイルが見つかりません
2026-03-10 10:20:45 error: 接続がタイムアウトしました
C:\users\user>

主要オプション

オプション説明
/I大文字・小文字を区別しない
/Sサブフォルダも再帰的に検索
/R検索文字列を正規表現として扱う
/L検索文字列をリテラル(文字どおり)として扱う
/C:"文字列"検索文字列をスペース含めてそのまま検索(既定ではリテラル)
/X行全体が完全に一致する行のみ表示
/G:ファイル検索文字列をファイルから読み込む
/D:ディレクトリセミコロン区切りのディレクトリ一覧から検索
/V一致しない行を表示(除外検索)
/N一致した行の行番号を表示
/M一致したファイル名のみ表示
/B行頭に一致するパターンを検索
/E行末に一致するパターンを検索
正規表現とリテラルの使い分け

/C: を使わずに指定した検索文字列は、正規表現の特殊文字(. や * など)を含む場合に正規表現として解釈されます。. や $ を文字どおり検索したい場合は /L を指定するか、\. のようにバックスラッシュでエスケープしてください。

大文字・小文字を区別しない検索(/I)

findstr /I "warning" log.txt

Warning、WARNING、warning のいずれにも一致します。

スペースを含む文字列を検索する(/C:)

スペースを含む文字列を検索する場合は、/C: オプションを使用します。

findstr /C:"disk full" log.txt
/C: を使わない場合

/C: を使わずに findstr "disk full" log.txt と記述すると、「disk」または「full」を含む行が検索されます(OR 検索になります)。スペースを含む文字列を正確に検索したい場合は /C: を使用してください。

一致しない行を表示する(/V)

/V オプションは、検索文字列に一致しない行を表示します。

findstr /V "^rem " script.cmd

行番号を表示する(/N)

findstr /N "TODO" main.cmd
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>findstr /N "TODO" main.cmd
15:rem TODO: エラー処理を追加する
42:rem TODO: ログ出力を実装する
C:\users\user>
おすすめ書籍※ 広告を含む場合があります
中小企業経営者のためのRPA入門 RPA導入を成功させる方法

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超入門

60分でわかる! AIエージェント 超入門

コマンドラインの黒い画面が怖いんです。

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

正規表現を使った検索

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)、()(グループ化)といった拡張正規表現はサポートされていません。

複数の条件で検索する

OR 検索(いずれかを含む行)

検索文字列をスペースで区切ると、いずれかに一致する行が表示されます。

findstr /I "error warning" log.txt

AND 検索(すべてを含む行)

FINDSTR には AND 検索のオプションがないため、パイプで連結して絞り込みます。

findstr /I "error" log.txt | findstr /I "database"

検索結果を判定する

FINDSTR は、一致する行が見つかると終了コード(エラーレベル)0、見つからないと 1 を返します。バッチファイルでの存在確認に利用できます。

@echo off
findstr /I /C:"error" log.txt >nul
IF %ERRORLEVEL% EQU 0 (
    echo エラーが記録されています。
) ELSE (
    echo エラーは記録されていません。
)

複数のファイルを検索する

ワイルドカードで指定

findstr "error" *.txt

サブフォルダを含めて検索(/S)

findstr /S "TODO" *.cmd
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>findstr /S "TODO" *.cmd
scripts\backup.cmd:rem TODO: ログ出力を追加
scripts\deploy.cmd:rem TODO: テスト環境の確認
tools\cleanup.cmd:rem TODO: 除外リストの更新
C:\users\user>

一致したファイル名だけを表示する(/M)

findstr /M /S "password" *.txt

検索文字列を含むファイルの名前だけを表示します。内容は表示されません。

パイプと組み合わせる

他のコマンドの出力をフィルタリングする場合に、パイプ | と組み合わせて使用します。

tasklist | findstr /I "chrome"
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>tasklist | findstr /I "chrome"
chrome.exe 1234 Console 1 215,040 K
chrome.exe 5678 Console 1 112,384 K
C:\users\user>
netstat -an | findstr "443"

FIND コマンドとの使い分け

特徴FINDFINDSTR
正規表現×○
再帰検索×○(/S)
複数条件検索×○(スペース区切り、/G)
一致行数のカウント○(/C)×
行番号表示○(/N)○(/N)
大文字小文字無視○(/I)○(/I)
除外検索○(/V)○(/V)
文字コードの制限

FINDSTR は UTF-8 や UTF-16 のファイルを正しく扱えない場合があります。日本語を含むファイルで検索結果が期待どおりにならないときは、文字コードを確認してください。詳しくは文字コードの解説も参照してください。

チェック

シンプルな固定文字列の検索には find コマンドを、正規表現やサブフォルダ検索が必要な場合は findstr を使用するのが適切です。

まとめ

この記事では、FINDSTR コマンドの使い方について解説しました。

FINDSTR は、正規表現による検索、サブフォルダの再帰検索、パイプとの連携など、FIND コマンドでは対応できない高度なテキスト検索を実現する強力なコマンドです。

関連記事

練習問題

練習問題

/C: オプションを使用せずに findstr "disk full" log.txt を実行した場合、どのような動作になりますか?

回答がサーバーに送信されることはありません
#コマンドプロンプト #バッチファイル #FINDSTR #正規表現 #テキスト検索