FINDコマンドはファイルやディレクトリ検索用のコマンドとよく勘違いされるコマンドですが、アスキー形式のファイルの内容に対して、指定した文字列で検索をかけて、文字列を含む行だけを表示するコマンドです。ファイルがどこに保存されているか調べるにはDIRコマンドを使用します。
通常使用時
書式: FIND [スイッチ] ”検索文字列” [パス]ファイル名
例: FIND "コマンドプロンプト" find-text.txt
リダイレクト使用時
書式: FIND [スイッチ] ”検索文字列” < [パス]ファイル名
例: FIND "コマンドプロンプト" < find-text.txt
パイプ使用時
書式: コマンドA | FIND [スイッチ] "検索文字列"
例: DIR /S | FIND ”<DIR>”
上記の例は、それぞれ「通常のコマンド使用」「リダイレクトで使用」「パイプで使用」した場合の例となります。通常使用時、リダイレクト共に入力はファイルから受け取り、出力は標準出力であるウインドウに出力していますが、パイプはDIRの実行結果を受け取って直接データを再処理しています。この辺りはMOREコマンドと共通ですね。
FINDを使用する際、必要となるのは”検索文字列”です。文字列は必ず半角の””(ダブルクォート)でくくりましょう。また検索文字列には1byte文字はもちろん漢字やひらがななど2byte文字も使用可能です。
実際にFINDを使ってみましょう。今回は通常のDIRコマンドの出力と、パイプを使用して「DIRコマンドの出力を受けて、文字列を含む行を抽出して表示」させた出力を比較してみましょう。
まずはDIRコマンドのみ場合
> DIR
ドライブ C のボリューム ラベルは Windows10 です
ボリューム シリアル番号は C841-2070 です
C:\Users\kobedenshi のディレクトリ
2020/07/25 14:02 <DIR> .
2020/07/25 14:02 <DIR> ..
2020/07/17 09:34 <DIR> .vscode
2020/07/24 00:48 <DIR> 3D Objects
2020/07/24 00:48 <DIR> Contacts
2020/08/03 00:46 <DIR> Desktop
2020/07/16 23:56 <DIR> Documents
2020/08/02 22:20 <DIR> Downloads
2020/07/24 00:48 <DIR> Favorites
2020/07/17 00:07 <DIR> Intel
2020/07/24 00:48 <DIR> Links
2020/07/24 00:48 <DIR> Music
2020/08/03 15:28 <DIR> OneDrive
2020/07/24 00:48 <DIR> Saved Games
2020/07/24 00:48 <DIR> Searches
2020/07/24 00:48 <DIR> Videos
0 個のファイル 0 バイト
16 個のディレクトリ 71,582,953,472 バイトの空き領域
となります。次に同じコマンド使用して、上記のデータをFINDに渡し、文字列”Documents”で抽出します。
> DIR | FIND "Documents"
2020/07/16 23:56 <DIR> Documents
実行するとDocumentsの文字列を含む行のみ表示されました。
スイッチ一覧
| オプションの種類 | 機能 |
|---|---|
| /v | 指定した文字列を含まない行をすべて表示する |
| /c | 指定した文字列を含む行の数だけを表示する |
| /n | 行番号を表示する |
| /i | 大文字と小文字の区別をしないで検索する |
FINDには上記のようなスイッチがあり、必要に応じて文字列を含ませたり、除外したりできます。特に説明を必要とするスイッチもないように思います。
より高度で高速な検索機能が必要な方は「FINDSTR」コマンドをお勧めします。FINDSTRでは再帰的検索や正規表現を使用した高度な文字列検索もできるようになっています。
