【コマンドプロンプト】Windowsで文字列検索を行う方法(findstr)


この記事はプロモーションを含みます。

ホーム > コマンドプロンプト・バッチファイル リファレンス

findstrは、Windowsコマンドプロンプトでテキストファイル内の文字列を検索するための便利なコマンドです。本記事では、findstrコマンドの基本的な使い方や便利なオプションを紹介します。

はじめに

Windowsのコマンドプロンプトでは、LinuxやmacOSのようなgrepコマンドは使用できませんが、同様の文字列検索を行うためのfindstrというコマンドがあります。
このコマンドは、テキストファイルやコマンドの出力から特定のパターンを検索するのに非常に役立ちます。
本記事では、findstrコマンドの基本的な使い方と、よく使われるオプションについて解説します。

findstrコマンドの基本的な使い方

findstrを使って特定の文字列を検索する基本的な形式は以下の通りです。

findstr "検索する文字列" ファイル名

例えば、log.txtというファイルから「error」という文字列を検索する場合は、次のように実行します。

findstr "error" log.txt

これにより、log.txt内で「error」を含む行が表示されます。

以下は実行例です。
サンプルデータ「log.txt」を対象に「Error」という文字列を検索してみます。

log.txt
1. Information: This is a log file.
2. Error: Something went wrong.
3. Warning: Disk space is low.
4. Error: Unable to connect to server.
C:\Workspace>findstr "Error" log.txt
2. Error: Something went wrong.
4. Error: Unable to connect to server.

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

findstrは、特定のファイルだけでなく、複数のファイルに対して検索を行うことができます。
例えば、カレントディレクトリ内のすべての.txtファイルを検索するには、次のようにコマンドを実行します。

findstr "検索する文字列" *.txt

これにより、ディレクトリ内のすべての.txtファイルが対象となり、指定した文字列を含む行が表示されます。

以下は実行例です。
下記のサンプルデータを対象に「Error」という文字列を検索してみます。

log1.txt
1. Information: Starting process.
2. Error: File not found.
3. Warning: Disk space is low.
4. Error: Access denied.
5. Information: Process completed.
log2.txt
1. Information: System initialized.
2. Error: Unable to connect to server.
3. Error: Invalid input.
4. Information: Running backup.
5. Warning: Network is unstable.
log3.txt
1. Information: Booting up.
2. Information: All systems operational.
3. Information: No errors found.
4. Information: Shutting down.

実行結果は「Error」を含む、log1.txt と log2.txt が表示されます。
log3.txt にある「errors」は、先頭が小文字なので引っ掛かりません。

C:\Workspace>findstr "Error" *.txt
log1.txt:2. Error: File not found.
log1.txt:4. Error: Access denied.
log2.txt:2. Error: Unable to connect to server.
log2.txt:3. Error: Invalid input.

サブディレクトリも検索する

findstrでは、サブディレクトリも含めて検索を行うことができます。
これには、/sオプションを使用します。
以下のように入力することで、サブディレクトリ内のファイルも検索対象になります。

findstr /s "検索する文字列" *.txt

以下は実行例です。
下記のサンプルデータを対象に「Error」という文字列を検索してみます。

log1.txt
1. Information: All systems operational.
2. Error: Missing file.
3. Information: Backup successful.
subdir\log2.txt
1. Error: Unable to connect.
2. Information: Connection established.
3. Warning: High CPU usage.

カレントディレクトリとサブディレクトリの両方に「Error」を含むファイルがあるので、以下のような結果が表示されます。

C:\Workspace>findstr /s "Error" *.txt
log1.txt:2. Error: Missing file.
subdir\log2.txt:1. Error: Unable to connect.

大文字小文字を区別せずに検索する

デフォルトでは、findstrは大文字と小文字を区別して検索します。
大文字小文字を区別せずに検索したい場合は、/iオプションを使います。
例えば、「Error」や「error」などをすべて検索したい場合は次のようにします。

findstr /i "error" log.txt

以下は実行例です。
下記のサンプルデータを対象に「error」という文字列を検索してみます。

log.txt
1. Information: Starting system check.
2. Error: File is corrupt.
3. Warning: Low memory detected.
4. Error: Disk read failure.
5. error: Connection lost.

検索文字列は「error」ですが、「Error」も検索に引っ掛かります。

C:\Workspace>findstr /i "error" log.txt
2. Error: File is corrupt.
4. Error: Disk read failure.
5. error: Connection lost.

検索結果に行番号を表示する

findstrでは、検索結果の行番号を表示させることもできます。
/nオプションを使うことで、検索結果に行番号が付与されます。
以下のようにコマンドを入力します。

findstr /n "error" log.txt

これにより、検索された行と一緒にその行番号が表示されます。

以下は実行例です。
下記のサンプルデータを対象に「Error」という文字列を検索してみます。

log.txt
1. Information: Process started.
2. Error: File missing.
3. Warning: Low battery.
4. Error: Network timeout.
5. Information: Backup completed.

先頭に行番号を付けて結果が表示されます。

C:\Workspace>findstr /n "Error" log.txt
2:2. Error: File missing.
4:4. Error: Network timeout.

完全一致で検索する

findstrでは、行全体が完全に一致する場合にのみ検索結果を表示するオプションもあります。
/xオプションを使うと、検索した文字列が行全体と一致する場合のみ結果が表示されます。
以下のようにコマンドを入力します。

findstr /x "error" log.txt

これにより、log.txtの中で「error」だけが完全一致している行だけが表示されます。

以下は実行例です。
下記のサンプルデータを対象に「error」という文字列を検索してみます。

log.txt
error
error123
This is an error message.
error

完全一致する 1 と 4 行目だけが表示されます。
分かりやすいように行番号を付けた結果も載せています。

C:\Workspace>findstr /x "error" log.txt
error
error

C:\Workspace>findstr /nx "error" log.txt
1:error
4:error

複数の文字列を検索する

findstrでは、複数の文字列を同時に検索することもできます。
検索したい文字列をスペースで区切ると、どちらかの文字列を含む行をすべて検索します。
例えば、「error」と「warning」のどちらかを含む行を検索する場合は次のように入力します。

findstr "error warning" log.txt

これにより、「error」または「warning」のいずれかが含まれる行が表示されます。

以下は実行例です。
下記のサンプルデータを対象に「Error」と「Warning」という文字列を検索してみます。

log.txt
1. Error: File missing.
2. Warning: Low disk space.
3. Error: Disk failure.
4. Information: System operational.
5. Warning: Network instability.

「Error」または「Warning」を含む行が取得されます。

C:\Workspace>findstr "Error Warning" log.txt
1. Error: File missing.
2. Warning: Low disk space.
3. Error: Disk failure.
5. Warning: Network instability.

おわりに

findstrはWindows環境で簡単に文字列検索を行うための便利なツールです。
findstrのオプションを組み合わせることで、より複雑な検索を効率よく行うことができます。
ぜひ、日々の作業で活用してみてください!

コメント

タイトルとURLをコピーしました