windows

各種OSでのインデックスを使用した高速ファイル名検索と全文検索【Windows編】

投稿日:2019年5月8日 更新日:

目的

  • Windows上に存在する全ての「~.java」ファイルをリストアップ。
  • 上記の内「System.out.println」が含まれているファイルを見つける。

環境

Windows10

使用アプリ、コマンド

以下二つを新規インストールします。

「Everything.exe」デスクトップアプリ

ファイル名をインデックス化 & 検索するデスクトップアプリ。手軽に使えて便利ですが、「Everything -s “検索したいファイル名”」のようにコマンドラインオプションを付けてもGUIが起動してしまう為、スクリプト上では使えません。

「es.exe」コマンド

Everything.exeが作成したインデックスに対してコマンドラインで検索を掛けることが出来ます。スクリプト化して自動化する際はこちらも併せてインストールします。

インストール

公式ダウンロードサイト。

「Everything.exe」 インストール

上記サイトから最新msiファイルをダウンロード。

msiを実行すると「C:\Program Files\Everything」にEverything.exeがインストールされる。

「es.exe」インストール

同サイトから最新zipをダウンロード。

解凍したディレクトリを適当なディレクトリに配置、PATH環境変数に追加。

以上でインストールは完了です。

ファイル名検索

「Everything.exe」による検索

Everything.exe起動。

「検索」→「正規表現で検索」にチェックを入れる。


「\.java$」を入力して拡張子javaのファイルをリストアップ。

Windows OS内の全ての~.javaファイルパスがリストアップされました。

「es.exe」による検索

cmd.exeを起動して、es [検索したいファイル名]。

C:\Users\naka> es -r "\.java$"
C:\opt\~\manager\org\apache\jsp\WEB_002dINF\jsp\_401_jsp.java
C:\Users\~\gradle-4.1\samples\java-library\with-groovy\a\src\main\java\A.java
C:\Users\~\android-25\com\android\settingslib\bluetooth\A2dpProfile.java
C:\Users\~\android-25\com\android\settingslib\bluetooth\A2dpSinkProfile.java
C:\Users\~\org\h2\build\code\AbbaDetect.java
    :
  (snip)

Windows OS内の全ての~.javaファイルパスがリストアップされました。

全文検索

Everything自体は全文検索機能を持っていません。
esの結果を一行ずつ、powershellの「Select-String (sls)」コマンドに食わせます。
sls、%{}はUNIXのgrep、xargsコマンドと同様の効果を持ちます。

C:\Users\naka>powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\Users\naka> es -r "\.java$" | %{ sls System.out.println $_ }
C:\Users\naka\Desktop\h2\src\main\org\h2\util\AbbaDetector.java:71:            System.out.println(thread + " " + indent +
C:\Users\naka\Desktop\h2\src\main\org\h2\util\AbbaLockingDetector.java:164:                        System.out.println(topLock + " synchronized after\n " + olderLock
    :
  (snip)

Windows OS内の全てのjavaファイルの中から「System.out.println」文字列を含むjavaファイルがリストアップされました。

インデックス更新

Everythingサービスが常駐している場合(msiインストールすると自動で常駐する)、ファイルを作成した時点でファイル名インデクシングされます。手動で更新する必要はありません。

まとめ

Everythingデスクトップアプリとesコマンドがあれば、 遅いエクスプローラの検索窓に辟易することが無くなります。



-windows

執筆者:

関連記事

UserAgent判定JSライブラリ「UAParser.js」と「Platform.js」の比較

(私はUAParser.jsを使っています) ネットを探すとUA文字列を解析してブラウザ判定をするコードが一杯出てきます。 でもUA解析プログラムを自前で作ってシステムに組み込むとなると、新しいブラウ …

adb devicesコマンドでAndroid端末を認識しない

目次1 事象2 原因3 解決 事象 USB接続するAndroidによって以下のエラーが出たりします。 C:\src\ionic\awsomeapp>adb devices List of dev …

4Gbyteを超える圧縮ファイルをWindowsで解凍する

目次1 はじめに2 対象読者3 7-zipを使う3.1 採用理由3.2 インストール3.2.1 インストーラでインストール3.2.2 chocolateyでインストール3.3 解凍してみる4 まとめ …

LANに接続しているPCをWindowsから見つける

家庭内LANでNASのIPアドレスを忘れたので調べたい職場LANに接続中のホストを調べたい NetEnumを入れられれば取れる情報も多く、ポートスキャンやパケットキャプチャも出来て幸せになれます。 単 …

 

shingo.nakanishi
 

東京在勤、職歴2n年中年ITエンジニアです。まだ開発現場で頑張っています。

19歳(1996年)から書き始めたアウトプット用プライベートWeb日記数が5,000日を超え、残りの人生は発信をして行きたいと思い、令和元日からこのサイトを開始しました。勉強と試行錯誤をしながら、自分が経験したIT関連情報を投稿しています。

私と同じく、今後IT業界で生計を立てて行きたいと考えている方や、技術共有したいけど仲間が居なくて孤独、といった方と一緒に成長、知識共有して行けたら楽しいな、と思っています。