grep(Ver9.35対応版)
目次−
動作環境−
検索−
grepの動作
ここの設定は、
上級者向け設定をONにすると設定できます。
- grepの動作
-
- 隠しファイルを除外
-
この設定は「grepの実行」と「grepして置換」の両方に影響があります。
ファイルの属性が隠しファイルになっているものは検索しないようにします。
- バイナリと思わしきファイルを除外
-
この設定は「grepの実行」と「grepして置換」の両方に影響があります。
ファイルの先頭1キロバイトを読み込んで、その中にNULL文字がトータル2バイト以上あるファイルを検索しないようにします。ただし、ファイルの先頭が「FF FE」または「FE FF」になっているUTF-16のファイル(いわゆるユニコードのファイル)はNULL文字を含んでいても除外しません。ファイルのオープンに失敗した場合や先頭1キロバイトの読み込みでエラーになったファイルも除外しません。
Version 8.52より、この判定を高速化するために、以下の仕様変更をしています。
− バイナリであることが確実な特定の拡張子のファイルは、中身を見ずに除外します。
(.exe .com .avi .png .zip .pdf等、有名な拡張子に限って)
− バイナリと判定されたファイルと同じ拡張子のファイルは、以後中身を見ずに除外します。(ただし、安全のために、拡張子の長さが3文字〜4文字で、レジストリの登録情報が"text"や"xml"でない場合に限って。)
− 「grepして置換」の場合や「追加の条件」を指定した場合など、上記の除外動作が効かずに従来通りの除外動作になる場合もあります。
- 指定した拡張子や名前を除外
-
この設定は「grepの実行」と「grepして置換」の両方に影響があります。
指定した拡張子やファイル名、サブフォルダ名を検索しないようにします。
拡張子だけによる指定
拡張子だけを指定する場合、「.」を書く必要はありません。
複数の拡張子を書く場合は、空白を空けて書いてください。
例:「exe」
例:「exe dll」
ワイルドカードによる指定(V8.20以降)
"*"や"?"を含む文字列で、ワイルドカードで指定ができます。
ワイルドカードはセミコロンで区切って複数指定することも出来ます。
ワイルドカードを指定する場合、そのワイルドカードにマッチするかどうかの判定方法は、「拡張子を厳密にチェックする」をONにした時と同じロジックになります。例えば「*.exe」を指定した場合は「abc.exe」にはマッチしますが、「abc.exex」はマッチしない扱いとなります。
ワイルドカードの"*"や"?"を入れずに「abc.xyz」のような文字列を指定すると、それはワイルドカードじゃない旧来の「拡張子のみの指定」をしたのと同じ扱いになります。ワイルドカード的な指定をする場合は、必ず"*"か"?"の文字を最低1文字入れてください。
例:「*.exe」
例:「*.exe;*.dll」
サブフォルダ名による指定(V8.85以降)
名前の最後に"\"を付けると、サブフォルダ名を除外できます。
ワイルドカードでサブフォルダ名の指定もできます。
例:「subfolder\」
例:「subfolder\;backup\」
例:「sub*\」
例:「sub*\;back*\」
ワイルドカードやサブフォルダの除外の記述は、grepダイアログの「<!〜>」の書き方と同じで、両方が混合されます。
- 「grepして置換」を実行する前に確認
-
「grepして置換」のダイアログで、実行する前に、バックアップの確認と、ファイルの排他制御の確認のダイアログを出します。
- 拡張子と短縮ファイル名を厳密にチェックする
-
この設定は「grepの実行」と「grepして置換」の両方に影響があります。
ワイルドカード(*.txtというような書き方)でファイルを指定した場合のファイルの検索方法を決めます。
拡張子について
OFFの場合、Windows標準のファイル検索方法になります。
3文字の拡張子を指定した場合、4文字以上にもヒットします。
(例:*.htmという指定で、test1.htmとtest2.htmlの両方にヒットする)
この挙動になるのは3文字の拡張子の場合だけで、1文字や2文字ではこうなりません。
ONの場合、必ず指定した通りの検索方法になります。
(例:*.htmという指定で、test1.htmはヒットし、test2.htmlはヒットしない)
短縮ファイル名(8.3形式のファイル名)について
短縮ファイル名は、Windows95時代よりも前のロングファイル名が扱えない環境との互換性のために、OSとファイルシステムによって付けられるファイル名です。
例えば、LongFileName.txtというファイル名は、LONGFI~1.TXTといったファイル名としても同時に扱えます。
このときワイルドカードと短縮ファイル名の組み合わせによっては、意図しない結果になることがあります。(例:*1.txtでLongFileName.txtがヒットしてしまう)
オプションをONにしておくと、ロングファイル名にはヒットしないけど、短縮ファイル名のほうにヒットしてしまうというようなことが無いようになります。
- 「grepして置換」のときファイル名厳密チェックの確認
-
この設定は「grepして置換」にだけ影響があります。
例えば、*.htmというファイル名指定をしたとき、もし拡張子htmとは異なるtest2.htmlというファイルが検索された場合に確認ダイアログを出します。
ロングファイル名にはヒットしないけど、短縮ファイル名のほうにヒットしてしまったと思わしき場合も確認ダイアログを出します。
- 文字数制限の設定
-
grep結果に表示する一行の文字数の上限、または正規表現の対象となる一行の文字数の上限を設定します。
高速(推奨)
マルチスレッドで高速に動作します。
正規表現OFFの場合は検索対象に上限はありません。正規表現ONの場合は一行の検索対象に約1MBの上限があります。
「その他のトラブル対策」の「grepの処理を従来通りにする」がOFFのときに相当します。
従来の動作(バッファ小さい)
grep結果は、一行が約32KB(半角で約3万文字)までを表示します。
正規表現OFFの場合は検索対象に上限はありません。正規表現ONの場合は一行の検索対象に約32KBの上限があります。
「その他のトラブル対策」の「grepの処理を従来通りにする」がONのときに相当します。
従来の動作(バッファ大きい)
grep結果は、一行が約1MBまでを表示します。
正規表現OFFの場合は検索対象に上限はありません。正規表現ONの場合は一行の検索対象に約1MBの上限があります。
「その他のトラブル対策」の「grepの処理を従来通りにする」がONのときに相当します。
制限なし
常に文字数制限等を解除した状態で実行します。
仮想的に秀丸エディタの本文にファイルを開いて検索して結果を出すモードとして動作させ、動作は遅くなります。
grepで「追加の条件」がONのときは、設定に関わらず常に制限なしモードとして動作します。
「その他のトラブル対策」の「grepの処理を従来通りにする」がON/OFFに関わらず、このオプションが優先されます。
このモードの場合、検索結果や正規表現の検索対象に上限はなく、通常にファイルを開いて検索したときと全く同じ動作になります。
他のオプションより動作は遅くなり、grep中はほぼすべての操作ができなくなります。
V8.90以降では、「制限なし」にしなくても、エンコードの種類の自動判定は、エンコード1の設定の「優先順位に従う」が適用できます。
(V8.90未満では、優先順位を適用するためには、「制限なし」にする必要がありました。優先順位のために「制限なし」にされていた場合は、「高速」にすることをお勧めします。)
制限を超えたとき確認メッセージを表示
「制限なし」以外のとき、一行が長くて切れたものが出力されているときや、正規表現で一行が長い対象になっていると思わしいときに警告を表示します。
- grep結果上ではダブルクリック=タグジャンプとする
-
grep結果でジャンプしたい行をダブルクリックするとタグジャンプするようになります。
キー割り当てのダブルクリックは無視されます。
参照:
grepの実行