「たくさんのログからエラーだけを見つけたい」
「ファイルに特定の言葉が入っているか調べたい」
そんなときに便利なのが、findstr(ファインド・ストリング)というコマンドです。
findstrはWindowsに最初から入っている文字列検索ツールで、PowerShellからもそのまま使えます。
この記事では、findstrの基本的な使い方から、実際の仕事で役立つ応用テクニックまで詳しく説明します。
基本的な使い方

一番シンプルな検索
説明 ファイルの中から特定の文字を探す基本的な方法です。
基本の書き方
findstr "探したい文字" ファイル名
例1:ログファイルからエラーを探す
findstr "error" log.txt
実行結果の例
2024-01-15 10:30:22 ERROR: Database connection failed
2024-01-15 11:45:33 ERROR: File not found
複数のファイルをまとめて検索
説明 たくさんのファイルを一度に検索したいときの方法です。
例1:すべてのログファイルを対象にする
findstr "timeout" *.log
例2:すべてのテキストファイルを対象にする
findstr "設定" *.txt
複数の言葉を同時に探す
説明 「AまたはB」という条件で検索する方法です。
例
findstr "error fail" system.log
この例では、「error」か「fail」のどちらかが含まれる行を表示します。
便利なオプション

findstrには、検索をより便利にするオプションがあります。
よく使うオプション一覧
オプション | 何ができるか | 使う場面 |
---|---|---|
/I | 大文字小文字を区別しない | 「Error」も「error」も見つけたい |
/N | 行番号を表示する | 何行目に書かれているか知りたい |
/S | サブフォルダも検索する | フォルダの中のフォルダも調べたい |
/R | 正規表現を使う | 複雑なパターンで検索したい |
/C:"文字列" | 複数の単語を一つの文として検索 | 「connection error」という文を探したい |
/V | 含まない行を表示する | 特定の文字が入っていない行を見たい |
オプションの使用例
例1:大文字小文字を区別せず、行番号付きで表示
findstr /I /N "failed" error.log
実行結果の例
15:2024-01-15 10:30:22 Connection failed
28:2024-01-15 11:45:33 Login Failed
例2:複数の単語を一つの文として検索
findstr /C:"connection timed out" network.log
例3:サブフォルダも含めて検索
findstr /S "fatal" *.log
正規表現を使った高度な検索
/R
オプションを使うと、パターンを使った検索ができます。
IPアドレスを探す
説明 「数字.数字.数字.数字」の形式を探します。
例
findstr /R "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*" access.log
実行結果の例
192.168.1.100 accessed the server
10.0.0.1 connection established
特定のファイル拡張子を探す
説明 「.conf」や「.ini」で終わる行を探します。
例
findstr /R "\.conf$ \.ini$" setting.log
正規表現の注意点
重要 findstrの正規表現は簡単なものしか使えません。
+
(1回以上の繰り返し)は使えない?
(0回または1回)は使えない- より高度な検索には
Select-String
がおすすめ
PowerShellとの組み合わせ

findstrは他のPowerShellコマンドと組み合わせて使うと、さらに便利になります。
コマンドの出力を直接検索
説明 コマンドの結果を直接検索できます。
例1:ネットワーク情報からIPv4だけを表示
ipconfig | findstr "IPv4"
実行結果の例
IPv4 アドレス . . . . . . . . . . . .: 192.168.1.100
例2:プロセス一覧から特定のソフトを探す
tasklist | findstr "chrome"
ファイルの内容を検索して保存
説明 検索結果を新しいファイルに保存する方法です。
例
$errors = Get-Content log.txt | findstr "error"
$errors | Out-File error_only.txt
この例では、ログファイルからエラーだけを抜き出して、新しいファイルに保存しています。
複数条件での検索
例
Get-Content application.log | findstr /I "error fail warn"
この例では、「error」「fail」「warn」のいずれかが含まれる行を、大文字小文字を区別せずに検索しています。
実際の仕事で使える例
ログファイルの調査
場面 Webサーバーのログから問題を調べたいとき
例
# エラーだけを抜き出す
findstr /I "error" access.log
# 特定の時間帯のアクセスを調べる
findstr "2024-01-15 10:" access.log
# 404エラーを調べる
findstr "404" access.log
設定ファイルの確認
場面 設定ファイルから特定の設定を探したいとき
例
# ポート番号の設定を探す
findstr /I "port" config.txt
# データベース関連の設定を探す
findstr /I "database db" *.conf
システム情報の収集
場面 システムの状態を調べたいとき
例
# メモリ使用量の高いプロセスを探す
tasklist | findstr /R "[0-9],[0-9][0-9][0-9] K"
# 特定のサービスの状態を確認
sc query | findstr "SERVICE_NAME\|STATE"
よくある間違いと対処法
日本語の検索で文字化けする
問題 日本語を検索すると、結果が正しく表示されない
対処法 PowerShellのエンコーディングを確認する
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
findstr "日本語" file.txt
複数語検索で期待した結果にならない
間違った例
findstr "connection error" log.txt # これは「connection」OR「error」
正しい例
findstr /C:"connection error" log.txt # これは「connection error」という文
特殊文字でエラーになる
問題 「(」「)」「[」「]」などを検索するとエラーになる
対処法 特殊文字の前に「\」を付ける
findstr "エラー\(重要\)" log.txt
findstrとSelect-Stringの違い

項目 | findstr | Select-String |
---|---|---|
速度 | 速い | やや遅い |
機能 | 基本的 | 高機能 |
正規表現 | 簡易版 | 完全版 |
PowerShell連携 | 普通 | 優秀 |
おすすめ用途 | 簡単な検索 | 複雑な検索 |
まとめ
findstrの基本パターン
やりたいこと | コマンド例 |
---|---|
基本検索 | findstr "word" file.txt |
複数語検索 | findstr "word1 word2" file.txt |
サブフォルダ含む | findstr /S "error" *.log |
大文字小文字無視 | findstr /I "Error" file.txt |
行番号表示 | findstr /N "error" file.txt |
正規表現 | findstr /R "パターン" file.log |
パイプ連携 | `Get-Content file.txt |
使い分けのコツ
findstrがおすすめの場面
- 簡単で速い検索がしたい
- 大量のファイルを検索したい
- ログ調査で基本的な文字列を探したい
Select-Stringがおすすめの場面
- 複雑な正規表現を使いたい
- PowerShellオブジェクトとして結果を扱いたい
- より細かい制御をしたい
コメント