検索

1 つまたは複数のファイル内のテキストの文字列を検索し、指定した文字列を含むテキスト行を表示します。

構文

find [/v] [/c] [/n] [/i] [/off[line]] <"string"> [[<drive>:][<path>]<filename>[...]]

パラメーター

パラメーター 説明
/v 指定した <string> を含まないすべての行を表示します。
/c 指定した <string> を含む行をカウントし、合計を表示します。
/n 各行の前にファイルの行番号を付けます。
/i 検索で大文字と小文字が区別されないことを指定します。
[/off[line]] オフライン属性が設定されているファイルはスキップしません。
<"string"> 必須。 検索する文字のグループ (引用符で囲む) を指定します。
[<drive>:][<path>]<filename> 指定した文字列を検索するファイルの場所と名前を指定します。
/? コマンド プロンプトにヘルプを表示します。

終了コード

終了コード 説明
0 検索された文字列が見つかりました
1 検索された文字列が見つかりません
2 検索されたファイルが見つからないか、無効なコマンド ライン スイッチが指定されました

解説

  • /i を使用しない場合、このコマンドは指定した string と完全に一致する値を検索します。 たとえば、このコマンドは文字 aA を別々に扱います。 ただし、/i を使用すると、検索では大文字と小文字が区別されず、aA が同じ文字として扱われます。

  • 検索する文字列に引用符が含まれている場合は、文字列内に含まれる引用符のそれぞれに二重引用符を使用する必要があります (例: """This string contains quotation marks""")。

  • ファイル名を省略した場合、このコマンドはフィルターとして機能し、標準入力ソース (通常はキーボード、パイプ (|)、またはリダイレクトされたファイル) から入力を受け取り、string を含む行を表示します。

  • コンソール検索を終了するには、CTRL-X または CTRL-z を使用します。

  • find コマンドのパラメーターとコマンドライン オプションは、任意の順序で入力できます。

  • 検索文字列にワイルドカード (*?) を使用することはできません。 ワイルドカードと正規表現パターンを含む文字列を検索するには FINDSTR コマンドを使用します。

  • 同じコマンド ラインで /c/v を使用した場合、このコマンドでは指定した文字列を含まない行の数が表示されます。 同じコマンド ラインで /c/n を指定した場合、find/n を無視します。

  • このコマンドは復帰を認識しません。 このコマンドを使用して復帰を含むファイル内のテキストを検索する場合は、検索文字列を復帰間で見つかるテキスト (つまり、復帰によって中断される可能性が低い文字列) に制限する必要があります。 たとえば、このコマンドは、2 つの単語 tax と file の間で復帰が発生した場合、文字列 tax file の一致を報告しません。

  • このコマンドでは、ファイル名にワイルドカードを使用できます。 1 つのファイル (または複数のファイル) で検索すると、処理済みのファイルの先頭に 10 個のダッシュが付いてファイルが出力されます。

  • find コマンドは、代替データ ストリームを読み取ることができません。 代替データ ストリームで検索する場合は、findstrmore、または for /f コマンドを使用します。

pencil.md から文字列 pencil sharpener を含むすべての行を表示するには、次のように入力します。

find "pencil sharpener" pencil.md

ファイル report.txt 内でテキスト "The scientists labeled their paper for discussion only. It is not a final report." (引用符を含む) を検索するには、次のように入力します。

find """The scientists labeled their paper for discussion only. It is not a final report.""" < report.txt

ファイルのセットを検索する場合、ワイルドカードを使用できます。 現在のディレクトリで、拡張子が .bat で、文字列 PROMPT (大文字と小文字を区別しない) を含むファイルを検索するには、次のように入力します。

find /i "PROMPT" *.bat

文字列 CPU を含むディレクトリ内のファイル名を検索するには、次のようにパイプ (|) を使用して、dir コマンドの出力を find コマンドに送信します。

dir c:\temp /s /b | find "CPU"

agent を含まないすべての実行中プロセスを検索するには、次のように入力します。

tasklist | find /v /i "agent"

次のように、サービスが実行中かどうかを確認します。

sc query  Winmgmt | find "RUNNING" >nul 2>&1 && (echo service is started) || (echo service is stopped)