Programming Field

DOS コマンド一覧

Find

ファイルの中身や標準入力から、指定された文字列を行単位で検索し、結果を表示します。

[Windows 2000以降] 「Findstr」を使用すると再帰的検索や簡易的な正規表現を使用した検索などを行うことができます。

※ Cygwin環境や、Git for WindowsがインストールされPathが設定されている場合などは、「find(.exe)」をそのまま実行するとこれらLinux系統のfindプログラムが実行される場合があります。WindowsコマンドのFind.exeが実行されるかどうかは「find /?」を実行してコマンドのヘルプが出るかどうかで確認できます。

構文

find[.exe] [/V] [/C] [/N] [/I] [/OFF[LINE]]
    "<text>" [[<drive>:][<path>]<file-name> ...]
/V
指定した文字列が「存在しない」行を検索します。
/C
検索し終えたときに一致した行の数を出力します。/V が指定されていないときは文字列が存在した行の数、/V が指定されているときは存在しなかった行の数を表示します。
/N
検索にヒットした行を表示する際、行番号を表示します。/C が指定されているときは意味がありません。
/I
検索する文字列の大文字・小文字を区別しません。
/OFF[LINE]
[Windows NT 系] 「オフライン属性」が指定されたファイルをスキップせず、検索します。
"<text>"
検索する文字列を指定します。「"apple"」のように、必ず「"」を付けます。
<drive>:, <path>, <file-name>
検索するファイル名を指定します。ドライブやパスを省略すると現在のドライブ・パスにあるファイルを検索します。ファイル名は複数指定することが可能です。
[Windows NT 系] ファイル名にワイルドカードを指定することができます。
[Windows 95/98/Me 以前] ワイルドカードは使用できません。

解説

このコマンドは、ファイルに含まれる文字列を検索するコマンドです。ファイル名を指定して検索するものでは無いので注意してください。ファイル名を検索する場合はDirコマンドForコマンドを使用します。

このコマンドは以下の終了コード(エラーコード)を返します。バッチファイルでIfとErrorlevelを用いることで、条件分岐を行うことが出来ます。

コード意味
0検索は正常終了し、文字列はファイル内で1つ以上ヒットしました。ファイルが複数指定されている場合は1つ以上のファイルで見つかったことを示します。
1検索は正常終了しましたが、文字列はファイル内に見つかりませんでした。ファイルが複数指定されている場合はすべてのファイルで見つからなかったことを示します。
2検索中にエラーが発生しました。(文字列が見つかったかどうかは分かりません)

※ 「/V」があるときは「見つかった」の意味が逆となり、検索対象のファイルの中に文字列が一つも見つからなかったファイルがあるときに「0」、(すべての)ファイルで文字列が見つかった時に「1」が返ります。

サンプル
find /n "the" document.txt

document.txt から「the」という文字列を検索します。検索結果は以下のようになります。

---------- document.txt
[5]and he got the best prize.