2011年6月2日木曜日

FIND = ファイルの中を文字列検索する - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。ファイルとフォルダー関連
○Windows XP
ファイルの中を文字列検索して、条件と一致する行もしくは行数を取り出します。

o 最初の書式に限り、複数ファイルを指定する事が出来ます。
o 最初の書式に限り、表示結果にヘッダーが追加されます。
    + 最初の書式を使って処理を自動化する時は、必要に応じて表示結果を加工します。


**** 書式
--------
find [オプション] "文字列" [ファイル名]
もしくは
find [オプション] "文字列" < ファイル名
もしくは
コマンド | find [オプション] "文字列"
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
o オプション = 下記のオプションを、半角空白区切りで並べます。
    + オプションを省略した時は、次のように動きます。
        + 指定した文字列を含む行だけ、内容表示します。行番号は付けません。
        + 文字列比較の時に、大文字小文字を区別します。全角半角も区別します。
FIND コマンドのオプション一覧
オプション意味
/c文字列を発見した行の数だけを表示します。
このオプションを付けると、行の内容や行番号は表示しません。
/n発見した行の行番号も表示します。(表示結果例:「[1]ミクさん。おはようございます。」)
/i比較する時に、大文字小文字を区別しません。
/v指定した文字列を含まない行だけを表示します。
/off
もしくは /offline
オフライン属性が設定されたファイルも検索します。
このオプションについては、to_dkでは動作確認していません。

o 文字列 = 「"」(= 二重引用符)で括ります。
o ファイル名 = 中を検索したいファイル名です。
    + UNIX形式の区切り文字「/」も指定出来ます。(例「C:/ミクさん/ネギ.txt」)
    + リダイレクトを使わない時は、動きが少し変わります。
        + ファイル名を複数並べる事が出来ます。
        + ファイル名にワイルドカード(「*」や「?」)を使用する事が出来ます。
        + 表示結果の最初に、次のようなヘッダーが挿入されます。
--------
find "ネギ" ミクさん.txt

---------- ミクさん.TXT
好きな食べ物 : ネギ

--------

    + ファイル名を省略した時は、比較するデータを直接画面に入力します。
        + データの終わりは「Ctrl キーを押しながら Z キー」。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 0 = 検索結果 1件以上
    + 「ファイルが見つかりません - ネギ.txt」 = 見つからないファイルがあります。
    + ファイル名が間違っていても、1ファイル以上検索して見つかった行がある場合には、戻り値は 0 になります。
o 1 = 検索結果 0件
    + 「ファイルが見つかりません - ネギ.txt」 = 見つからないファイルがあります。
    + ファイル名が間違っていても、指定した全てのファイルで見つかった行が無い場合に限り、戻り値は 1 になります。
o 2 = 書式エラー
    + 「FIND: パラメータの書式が違います」 = 検索する文字列を指定して下さい。


**** 使用例
--------
find /c "葱" ミクさん.txt リンちゃん.txt

dir | find "ミクさん.txt"
find "葱" < ミクさん.txt
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。


**** 機能
o ファイルの中を文字列検索して、条件と一致する行もしくは行数を取り出します。
o リダイレクト無しでファイル名を指定する時は、複数のファイルを指定する事が出来ます。
    + 但し、表示結果にヘッダーが含まれます。
    + 自動処理する時は、表示結果の加工が必要な事があります。


**** メモ
o Windows XPでは、文字コードが UTF-8 のファイルを比較する事は出来ませんでした。
    + 英字は検索出来ましたが、漢字の入力の所で文字化けします。
    + Windows XPで日本語対応しているのは、ANSI(= Shift-JIS cp932)と Unicode(= UTF-16)だけみたいです。


**** 確認したバージョン
o Windows XP Service Pack 3 -- 但し、to_dk未検証項目あり(= /OFFLINE)


==
関連ページ:
    ▼Windowsコマンド。ファイルとフォルダー関連▼ABC順
    ▼Windowsコマンド一覧▼ABC順
    ▼コマンドプロンプト画面
    > ▼FINDSTR = ファイルの中を正規表現、もしくは文字列で検索する。OR検索可能版
    FC = ファイルの内容を比較して、それらの違いを表示する
    COMP = ファイルの内容を比較する。最後に質問あり版
(2011年10月9日変更。戻り値 1の欄で、メッセージの説明見直し)
(2011年6月3日追加。ファイル名の指定は、UNIX形式も可)
(2011年6月2日追加。冒頭の説明文にも、複数ファイル使用可)