Windows 11でファイルを検索する場合、ファイル名だけでなくファイルの内容を検索したい(全文検索したい)ときがあります。
そこでここでは、Windows 11でファイルの内容を検索する(全文検索する)方法を紹介します。
目次
エクスプローラーからファイルの内容を検索する
Windows 11では、デフォルトでユーザーフォルダー(個人用フォルダー)にはインデックスが作成されており、インデックスが作成されているフォルダー内のファイルは、エクスプローラーなどからファイルの内容も検索できますが、ユーザーフォルダー(個人用フォルダー)以外の場所にあるファイル(インデックスが作成されていない場所にあるファイル)の内容を検索したいときは、以下のいずれかの対応が必要になります。
- エクスプローラーで検索設定を変更する
- ファイルの内容を検索したいフォルダーに対してインデックスを作成する
なお、ファイルの内容を検索できるファイル形式は、テキスト形式、Microsoft Office形式、PDF形式などに限られます。
検索設定を変更
検索設定を変更する場合は、まずエクスプローラーを起動し「表示」タブから「オプション」をクリックします。
「フォルダーオプション」画面が表示されるので「検索」タブの「ファイル名と内容を常に検索する(数分かかる場合があります)」にチェックを入れて「OK」をクリックします。
これで、ファイル名だけでなくファイルの内容も検索することができます。
ただし、この方法でファイルの内容を検索できるようにした場合、検索量が増えるためこれまでに比べて検索結果が表示されるまで時間がかかる場合があります。
インデックスを作成
もう一つの方法は、ユーザーフォルダーのように、検索したいフォルダーにあらかじめインデックスを作成しておく方法で、この方法ならファイルの内容も高速検索できるようになります。
インデックスには、ファイル名や作成日時、更新日時といったプロパティ情報やファイルの内容など情報が含まれており、インデックスがあればファイルの内容を高速に検索できます。
PC全体にインデックスを作成したいときは、以下の記事をご覧ください。

特定のフォルダーにのみインデックスを作成して、フォルダー内のファイルの内容を高速に検索できるようにしたいときは、Windowsの「設定」から「プライバシーとセキュリティ」>「Windows検索」を順に開き「関連設定」から「詳細インデックスオプション」をクリックします。
「インデックスのオプション」画面が開くので、画面下の「変更」をクリックします。
「インデックスが作成された場所」画面が表示されるので「選択された場所の変更」で、インデックスを作成したいフォルダーにチェックを入れ「OK」をクリックします。
ここでは、例として「D:\test」フォルダーを選択しています。
「インデックスのオプション」画面に戻ったら「インデックスを作成する対象」に、上で選択したフォルダーが表示されていることを確認して「閉じる」をクリックします。
以上で、新たにインデックスの作成対象にしたフォルダー内(ここでは「D:\test」フォルダー)を検索すると、ファイルの内容も高速検索できるようになります。
なお、大量のファイルが保存されているフォルダーに対してインデックスを作成した場合、インデックスの作成中はマシンに負荷がかかり、スペックの低いマシンでは、通常の操作に影響が出る場合があるので注意してください。
コマンド操作でファイルの内容を検索する
コマンド操作でファイルの内容を検索するときは、Windowsコマンドのfindstrコマンド、またはPowerShellのSelect-Stringコマンドレットを使うことで、テキストファイル内の文字列を検索できます。
findstrコマンド
findstrコマンドの基本的な書式は次のとおりで、検索文字列には正規表現も使用できます。
> findstr "検索文字列" ファイル名
たとえば、F:¥testフォルダー内のテキストファイルのうち、ファイルの内容に「aa」という文字列を含むファイルを検索したいときは、以下のようにコマンドを実行します。
> findstr "aa" F:\test\*.txt
検索文字列に複数の条件を指定することもできます。
たとえば、文字列として「aa」と「bb」のいずれかを含むファイルを検索したいとき(OR検索)は、以下のようにコマンドを実行します。
> findstr "aa bb" F:\test\*.txt
文字列として「aa」と「bb」の両方を含むファイルを検索したいとき(AND検索)は、以下のようにコマンドを実行します。
> findstr /c:"aa bb" F:\test\*.txt
なお、findstrコマンドが検索できるのはシフトJISのテキストデータに限られるため、UTF-8などのテキストファイルの内容を検索したいときは、findstrコマンドに渡す前にシフトJISへ変換しておく必要があります。
Select-Stringコマンドレット
Select-Stringコマンドレットの基本的な書式は次のとおりで、検索文字列には正規表現も使用できます。
PS> Select-String -Path "検索対象のファイル" -Pattern "検索文字列"
たとえば、F:¥testフォルダー内のテキストファイルのうち、ファイルの内容に「aa」という文字列を含むファイルを検索したいときは、以下のようにコマンドを実行します。
PS > Select-String -Path "F:\test\*.txt" -Pattern "aa"
検索文字列に複数の条件を指定することもできます。
たとえば、文字列として「aa」と「bb」のいずれかを含むファイルを検索したいとき(OR検索)は、以下のようにコマンドを実行します。
PS > Select-String -Path "F:\test\*.txt" -Pattern "aa","bb"
文字列として「aa」と「bb」の両方を含むファイルを検索したいとき(AND検索)は、以下のようにコマンドを実行します。
PS > Select-String -Path "F:\test\*.txt" -Pattern "aa" | Select-String "bb"
文字列として「aa」を含まないファイルを検索したいとき(NOT検索)は、以下のようにコマンドを実行します。
PS > Select-String -Path "F:\test\*.txt" -Pattern "aa" -NotMatch
なお、Select-Stringコマンドレットでは、デフォルトで文字コードをUTF-8BOM付にしとかないと正しく検索できないため、検索するテキストファイルの文字コードをUTF-8BOM付にあらかじめ変換しておくか、「-Encoding」オプションで検索対象のテキストファイルの文字コードを指定する必要があります。
参考:Select-String (Microsoft.PowerShell.Utility) - PowerShell | Microsoft Learn