Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

ファイル探索のための サクラエディタ正規表現Grep法

More than 1 year has passed since last update.

概要

本投稿では、正規表現とgrepの活用方法を説明します。

正規表現を使用した検索置換をマスターすると、
テキストファイルの整形時は勿論のこと、ドキュメントの編集など業務のあらゆる場面で楽が出来ます。

また、ファイルサーバ内などのファイルを高速に検索するために、ファイル一覧化バッチで一覧化し、サクラエディタでgrepしましょう。
サーバを逐一読みに行かなくて済むため、頻繁にファイルを探す用事がある人はかなり楽になると思います。

※「正規表現」とは、ある特徴を満たす文字列の事を、決まった法則で表す手法の事です。テキストファイルから文字列を検索する際の、検索条件に使われることが多いです。
※「grep」とは、複数のファイルからキーワードに該当する部分を一括で抽出してくれるプログラムの事です。

サクラエディタの使用を前提としています。
定常的な運用作業に便利なバッチも作成しましたので、良ければこちらもご活用ください。

諸般の事情によりサクラエディタを使用できないという方は、FINDSTRコマンドでgrepしてみてください。

環境

Windows 10, Windows 7
サクラエディタ v2.2.0以上

準備

  1. サクラエディタをインストールします。
  2. 正規表現ライブラリ bregonig.dllをサクラエディタと同じフォルダに配置します。
  3. ファイル一覧化バッチでファイルサーバ内のファイルの一覧を作成しておきます。
  4. Grepが直ぐにできるよう、ショートカットファイルを作成しておきます。
    リンク先例: "C:\Program Files (x86)\sakura\sakura.exe" -GREPMODE -GREPDLG -GFOLDER=Z:\filelist -GOPT=RP1

サクラエディタ コマンドラインオプション

Grepのやり方

利用可能な正規表現についてはこちらを参照してください。

今回はデモデータとして、WordPressのファイル一式とPythonのソースファイル一式をZドライブ直下に配置して使用しました。

Grep対象ファイルの絞り込み

Grep対象ファイルのサイズが大きかったりファイル数が多いと所要時間が掛かるため、目的のものが含まれるファイルが見当付く場合は初めに絞り込みます。
ワイルドカード '*' が使用可能です。'!'を先頭に付けると、それ以外という意味になります。一つの文字列内にワイルドカードを複数使用可能です。

項目 設定値 説明
ファイル *WP* WordPressフォルダの各ファイルのパスが記述されたファイルが対象

拡張子の絞り込み

拡張子はファイル名の末尾にあるため、正規表現の末尾を示す '$' を使用します。

項目 設定値 説明
条件 .png$ 拡張子が "png" のものに限定

特定の文字列を除外

正規表現で否定のパターンを示す "?!" とOR(論理和)を示す '|' を使用します。

項目 設定値 説明
条件 ^(?!.*(.php|.css|.png)).*$ PHP, CSS, PNGを除外

期間の絞り込み

ファイルの更新日時で絞り込みたい場合は、文字の範囲または括弧内の何れか一文字を示す "[]" を使用します。

項目 設定値 説明
ファイル *Attr* 各ファイルのサイズおよび更新日時が記述されたファイルが対象
条件 ^(?!.*(200[0-9]|201[1-8])/[01][0-9]).*$ 2000年~2018年のファイルを除外

複数の文字列を含むものに絞り込み

複数の文字列で検索したい場合は、任意の一文字を示す '.' と直前の文字の繰り返しを示す '+' を使用します。
また、それら文字列がともにファイル名に含まれるとは限らず、フォルダ名とファイル名に分かれているかも知れません。そのため、ファイルパスの一覧をGrep対象ファイルに指定します。

項目 設定値 説明
条件 lib.+test "lib", "test" を含むものに限定
ファイル *Path*Py* Pythonフォルダ内の各ファイルのパスが記述されたファイルが対象

Grep結果をさらに絞り込み

一度のGrepで目的のファイルを直ぐに見つける事は至難の業です。
Grepのヒット数が多すぎて見つけられない場合は、置換機能で絞り込みます。
[Ctrl]+[R]キーを押下で、置換ダイアログが開きます。

項目 設定値 説明
条件 ^(?!.*(main)).*$ "main" を含むもの以外
置換対象 行削除 条件に合致したものを削除

Grepのやり直し

Grepしても目的のものが見つからなかった場合は、条件を変えて最初からGrepをやり直します。
[Ctrl]+[G]キーを押下で、Grepダイアログが開きます。
テキストボックス内で[↑]/[↓]上下キーを押下するか、テキストボックス右端の [∨]印をクリックすると、履歴が表示されます(直近30件)。

ファイル一覧の該当行を開く

結果出力形式で「ノーマル」を選択してGrepし、そのGrep結果をダブルクリックすると、
該当行の位置にカーソルが移動した状態でGrepしたファイルが開かれます。

項目 設定値 説明
結果出力形式 ノーマル 条件に合致した行を含むファイルおよび当該行の内容を表示

検索に合致したファイルを開く

Grep対象ファイルにファイルパスの一覧を指定し、結果出力形式で「結果のみ」を選択してGrepし、
そのGrep結果をダブルクリックすると、条件に合致したファイル自体がサクラエディタで開かれます。

項目 設定値 説明
ファイル *Path* 各ファイルのパスが記述されたファイルが対象
結果出力形式 結果のみ 条件に合致した行の内容のみを表示
X-IA
SI業界インフラエンジニアリング業務従事の労働者 詳細は↓リンクの「概要・自己紹介」から
https://kothaka.com/Qiita?k=bolf1
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away