ファイル内の文字列を検索(FIND)
FIND コマンドを使用するとファイル内やコマンドの出力結果に含まれる文字列を検索することができます。ここではコマンドプロンプトにおける FIND コマンドの使い方について解説します。
※ 正規表現を使用して検索する方法については「ファイル内の文字列を正規表現で検索(FINDSTR)」を参照されてください。
FINDコマンドの使い方
FIND コマンドはファイルの内容や別のコマンドの出力結果に含まれる文字列を検索します。書式は次の通りです。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "文字列" [[ドライブ:][パス]ファイル名[...]]
ファイルに含まれる文字列を検索する場合の基本書式は次の通りです。
FIND "検索する文字列" ファイル名
検索する文字列はダブルクォーテーションで囲んで指定してください。
FIND コマンドで用意されているオプションの意味は次の通りです。
/V 指定した文字列を含まない行をすべて表示します。 /C 指定した文字列を含む行の数だけを表示します。 /N 行番号を表示します。 /I 大文字と小文字の区別をしないで検索します。 /OFF[LINE] オフライン属性が設定されたファイルをスキップしません。
それぞれ確認していきます。
ファイルの内容を検索する
今回次のようなファイル pref.txt を用意しました。
カレントディレクトリにある pref.txt ファイルの中で文字列 "京" が含まれる行を表示するには次のように実行します。
find "京" pref.txt
FIND コマンドを実行すると対象のファイルの中で検索文字列が含まれる行の一覧が表示されます。
「/V」オプション
指定した文字列が含まれない行の一覧を取得するには「/V」オプションを使用します。例えばカレントディレクトリにある pref.txt ファイルの中で文字列 "県" が含まれない行を表示するには次のように実行します。
find /v "県" pref.txt
「/N」オプション
FIND コマンドを使用するときに、検索文字列が含まれる行が表示される時に行番号をつけて表示するには「/N」オプションを使用します。例えばカレントディレクトリにある pref.txt ファイルの中で文字列 "山" が含まれる行を行番号を付けて表示するには次のように実行します。
find /n "山" pref.txt
パイプを使って他のコマンドの実行結果を検索する
例えば TYPE コマンドを使ってカレントディレクトリにある pref.txt ファイルの内容を出力してみます。
type pref.txt
FIND コマンドを使用することで、他のコマンドを実行した時の実行結果の中に指定した検索文字列が含まれるものだけを表示することができます。例えば先ほどの TYPE コマンドの実行結果の中で文字列 "山" が含まれる行を表示するには次のように実行します。
type pref.txt | find "山"
複数のファイルを対象に検索する
FIND コマンドでは複数のファイルを対象に検索を行うことができます。複数のファイルを対象にする場合は次のように記述してください。
FIND "検索する文字列" ファイル名1 ファイル名2 ...
今回次のようなファイル pref1.txt と pref2.txt を用意しました。
カレントディレクトリにある pref1.txt と pref2.txt ファイルの中で文字列 "山" が含まれる行を表示するには次のように実行します。
find "山" pref1.txt pref2.txt
拡張子が .txt のファイルをすべて対象とするような場合は、一つ一つファイル名を指定する代わりに *.txt のように指定できます。
find "山" *.txt
大文字と小文字を区別せずに検索する
次のようなファイル product.txt を用意しました。
FIND コマンドはデフォルトで検索文字列の大文字と小文字を区別します。そのため、先ほどのファイルを対象に文字列 "Blue" を検索すると 2 行だけ一致します。
find "Blue" product.txt
検索を行う時に大文字と小文字を区別せずに検索する場合は「/I」オプションをつけて実行します。例えばカレントディレクトリにある product.txt ファイルの中で文字列 "Blue" が含まれる行を大文字か小文字かに関係なく検索し表示するには次のように実行します。
find /i "Blue" product.txt
今回は "Blue" だけでなく "blue" が含まれるファイルも検索結果に表示されるため 3 行が一致しました。
-- --
FIND コマンドを使ってファイル内やコマンドの出力結果に含まれる文字列を検索する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。