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」の比較

2019年時点で開発が継続しているUA判定JSライブラリから2つ選択して動作を確認しました。 目次1 Webリソースから比較1.1 github比較1.2 NPMリポジトリ比較2 実際に使用して比較2 …

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
 

東京在勤、1977年生まれ、IT職歴2n年、生涯技術者として楽しく生きることを目指しています。デスマに負けず健康第一。