sgcFSearch: 入力中に結果が出る、無料の Windows ディスク全体ファイル検索

· アプリケーション
sgcFSearch: 入力中に結果が出る、無料の Windows ディスク全体ファイル検索 | eSeGeCe ブログ
無料ツール · Windows 10 と 11 x64

入力しながら
あらゆるファイルを見つける。

sgcFSearch は固定ドライブ上のすべてのファイルとフォルダーの名前をインデックス化し、クエリにミリ秒で応答して、ファイルが変わってもインデックスを最新に保ちます。どの手順でも管理者権限は不要です。

どこでも Alt+Shift+Space で開けます
63s初回クロール、340 万ファイル
13〜18msクエリあたり、タイプミスやフィルターも含む
308msファイルの変更が反映されるまで
1.0s再起動から準備完了まで

Release ビルドを使った 1 台の PC での QA 計測です。C: ドライブの 3,404,349 ファイルと 447,577 フォルダーを初回クロールしました。結果はディスク、CPU、ファイル数によって異なります。

ファイルがあることは分かっているのに、どこにあるのか分からない。sgcFSearch は、その探し回る時間を終わらせる、無料の Windows 向けディスク全体ファイル検索ツールです。どこでも Alt+Shift+Space を押して入力を始めると、1 キーごとに、数百万ファイルの中から一致度の高い順に結果が表示されます。

インデックスは小さなトレイアプリが 1 つで保持します。検索バー、sgcfs コマンドライン、独自のツールはすべて同じ質問をそのアプリに投げるため、どのクライアントにも同じ結果が見えます。通常のユーザーアカウントで動作し、すべての固定ドライブをインデックス化し、特権のないインターフェイスで NTFS 変更ジャーナルを読み取るため、管理者権限を求めることはありません。sgcFSearch は eSeGeCe が Delphi で作成した無料ツールです。その代わりに、検索バーに小さな “made by esegece.com” の表示が入ります。

sgcFSearch が入力中にファイルを見つける様子をご覧ください。YouTube でも公開しています。

キーを押すたびに結果を表示

検索バーは入力中に、ファイルアイコンと強調表示された一致文字とともに結果を表示します。Enter でファイルを開き、Ctrl+Enter で保存先フォルダーを表示します。入力した単語はすべてファイル名またはフォルダー名に一致する必要があり、大文字小文字は区別せず、単語は任意の順序で構いません。

sgcFSearch の検索バーにクエリを入力すると、キーごとに結果リストが更新される
Windows PC 上の実際のアプリから録画しました。

ランキングは使うほど学習します。結果は一致の品質とフォルダーの深さでスコア付けされ、開いたりコピーしたりしたファイルが上位に上がります。使用履歴は 14 日ごとに重みが半分になるため、古い習慣は自然に薄れていきます。

1 文字の間違いなら大丈夫

5 文字以上の単語は、1 文字の誤りがあっても一致します。文字の欠落、余分な文字、別の文字、隣り合う 2 文字の入れ替わりが対象です。そのため confgi で config.json が、raport で report.pdf が見つかります。タイプミスによる一致は最も低い一致ランクになるため、通常は完全一致より下に表示されます。

sgcFSearch の検索バーでタイプミスのあるクエリでも正しいファイルが見つかる
打ち間違えてもファイルは見つかります。

クリックで絞り込み

種類、更新日時、サイズ、フォルダー内、並べ替えの各チップが、type:images や mtime:week などのフィルターをクエリに書き込みます。手で入力したフィルターも、対応するチップが点灯します。検索バーは直近 50 件の検索も記憶しており、入力欄が空のときは Up で呼び出せます。

sgcFSearch の検索バーのフィルターチップがクエリに種類と日付のフィルターを追加する
チップとクエリは常に同期しています。

ファイルの中身を検索

ファイル名は話の半分にすぎません。grep:TODO は、内容フォルダー配下のファイルから、そのテキストを含む行を一覧表示します。内容フォルダーは既定ではユーザーフォルダーです。regex: は正規表現に一致する行を探し、sym: はシンボルが定義されている場所を探します。ファイル名が 1 つも一致しない場合は、sgcFSearch が自動的にファイルの中身を検索します。

sgcFSearch の検索バーの grep クエリが、ファイル内の一致する行を一覧表示する
内容検索はファイルだけでなく、一致する行を一覧表示します。

内容インデックスは、内容フォルダー内のテキストのトライグラムインデックスです。プレーンテキストとソースコード、Office をインストールしなくても読める Word、Excel、PowerPoint ファイル、OpenDocument ファイル、そして Windows のフィルター経由の PDF を読み取ります。候補は検索時に再度読み込まれるため、古いデータから結果が出ることはありません。

管理者権限なしで常に最新

すべての固定ドライブネイティブの NT ディレクトリ API を使うマルチスレッドクローラーが、すべての固定ドライブを列挙します。インデックスは names.idx に保存され、次回起動時に約 1 秒で読み込まれます。
ライブ更新アプリの実行中は、変更が 1 秒未満で検索結果に反映されます。再起動後は、変更ジャーナルが報告したフォルダーだけを再列挙します。
名前付きパイプ API独自のスクリプトやツール向けに、1 行に 1 つの JSON オブジェクトを返します。パイプへのアクセスは現在のユーザーのみに許可され、リモートクライアントは拒否されます。

邪魔にならないクエリ言語

単語とフィルターはスペースで区切り、順序は自由です。修飾子で単語を名前の先頭や末尾に固定でき、フィルターは拡張子、種類、区分、フォルダー、パス、サイズ、更新日、正規表現、件数制限、並べ替えに対応します。ユーザーガイドからの例をいくつか紹介します。

入力見つかるもの
report ext:pdf mtime:month名前に “report” を含み、過去 30 日以内に更新された PDF ファイル
^setup ext:exe in:~\DownloadsDownloads フォルダー内で、名前が “setup” で始まる実行ファイル
'package.json !node_modules\名前が正確に package.json で、node_modules フォルダーの中にないファイル
type:videos size:>1gb sort:size1 GB を超える動画を、大きい順に
.log$ size:>100mb mtime:>30d1 か月間触れていない大きなログファイル
ext:dproj in:C:\Projects in:D:\Workどちらかのフォルダーにある Delphi プロジェクト
grep:TODO ext:pas in:~\ProjectsProjects フォルダーの Pascal ファイルで “TODO” を含む行
sym:ParseQueryソースファイル内で ParseQuery が定義されている場所

ターミナルから同じインデックスを利用

sgcfs はパイプ経由で実行中のアプリと通信し、必要ならバックグラウンドで起動します。パスは stdout に、サマリーは stderr に出力されるため、結果をそのまま PowerShell にパイプできます。通常、詳細、JSON の出力形式、スクリプト用の終了コード、JSON lines ブリッジを備えています。実際のセッションです。

PowerShell: sgcfs
PS> sgcfs -n 8 notepad ext:exe
C:\Windows\notepad.exe
C:\Windows\SysWOW64\notepad.exe
C:\Windows\System32\notepad.exe
C:\Program Files\Notepad++\notepad++.exe
C:\Windows\WinSxS\wow64_microsoft-windows-notepad_31bf3856ad364e35_10.0.26100.9549_none_15298a72546c8c3f\notepad.exe
C:\Windows\WinSxS\wow64_microsoft-windows-notepad_31bf3856ad364e35_10.0.26100.8972_none_1501e9325489977a\notepad.exe
C:\Windows\WinSxS\amd64_microsoft-windows-notepad_31bf3856ad364e35_10.0.26100.9278_none_0af8678a1ff0a8d5\notepad.exe
C:\Windows\WinSxS\wow64_microsoft-windows-notepad_31bf3856ad364e35_10.0.26100.9549_none_15298a72546c8c3f\r\notepad.exe
12 results, 8 shown (16.14 ms)

PS> sgcfs bench
query           server ms   round trip    results
one word            13.79        14.25      21113
typo                12.91        13.39      21318
two words           12.65        13.14        670
filtered            11.92        12.44       2147
content grep        44.44        44.94        100
median of 20 runs per query, one connection

お使いの PC で sgcfs bench を実行すると、ディスクと CPU の実力を確認できます。どの検索にも --json を付ければ、たとえば sgcfs --json -n 2 kernel32.dll のように、各結果のパス、サイズ、更新時刻、スコアを含む生の JSON 応答が得られます。

インストール方法は 2 通り

ダウンロードは 2 種類です。署名済みのインストーラー sgcFSearch_setup.exe はユーザー単位でインストールし、スタートメニューの項目を追加して、ログイン時にアプリを起動し、sgcfs を PATH に追加することもできます。zip の sgcFSearch.zip には、手動インストール用に、署名済みの sgcFSearch.exe と sgcfs.exe、そしてユーザーガイドが入っています。フォルダーを好きな場所に展開して sgcFSearch.exe を実行し、sgcfs install --login で同じ 2 つの項目を追加、sgcfs uninstall で削除します。

Windows 10 バージョン 1809(ビルド 17763)以降、または 64 ビットの Windows 11 が必要です。メモリとディスクの使用量はファイル数に応じて増えます。340 万ファイルの場合、QA 用 PC ではメモリ 306 MB と 202 MB の names.idx を使用しました。

ディスク全体をミリ秒で検索

Windows 10 と 11 x64 向けの無料ツールです。署名済みのインストーラー、または手動インストール用の zip を入手してください。

ご質問やご意見はありますか?お問い合わせください。コードを書いた本人たちが返信します。