fselect ガイド:SQLでハードドライブを検索、ファイル検索の究極の姿
fselect:ファイル検索にSQLが出会うとき、すべてがエレガントになる
一言で言えば:「Dドライブのprojectsフォルダにある、100MBより大きく2024年1月以降に変更されたPDFファイル」のような複雑な条件でファイルを探す必要があるとき、fselect なら1つのSQLクエリで実行できます。
Everything は確かにファイル検索が高速ですが、そのクエリ機能は限られています。複数の条件を組み合わせたり、特定の方法で並べ替えたり、フォルダ間でファイル情報を集計したりする必要がある場合、Everything では不十分です。
そこで fselect の出番です。
fselectとは?
fselect はコマンドラインのファイル検索ツールで、最大の特徴は — SQL構文を使ってファイルを検索できることです。
はい、その通りです。SELECT、WHERE、ORDER BY — あのSQLキーワード — を使ってハードドライブを検索します。
fselect が解決する中核的な問題:
- 複雑な条件の組み合わせ検索 → SQLで柔軟に表現
- ファイル情報の集計 → count/avg/sumを直接使用
- 条件に基づくバッチ操作 → 結果を他のコマンドに直接パイプ
- 一貫したクロスプラットフォーム体験 → Mac/Linux/Windowsで同じ構文
使うとどれほど満足感があるか?
シナリオ1:複雑な条件検索
Everything で「1GB以上の動画ファイル」を検索するには、フィルターをクリックしていく必要があります。fselect なら1行で完了:
fselect "name, size, path FROM files WHERE type = 'video' AND size > 1g ORDER BY size DESC"
結果が直接リスト表示され、サイズの降順で並べられます。
シナリオ2:ディスク容量を空けるための大ファイル検索
ディスクがいっぱいで、クリーンアップする大きなファイルを探したい?
fselect "path, size FROM files WHERE size > 500m ORDER BY size DESC LIMIT 20"
ドライブ上の最大のファイル20個をリストアップします。
シナリオ3:ファイルのカウント
fselect "COUNT(*), LOWER(extension) FROM /path/to/project WHERE type = 'image' GROUP BY LOWER(extension)"
1つのコマンドで、プロジェクト内の各形式の画像がいくつあるかをカウント。
シナリオ4:詳細検索
C:\Work\Projects の中から、「report」というキーワードを含み、2024年以降に作成されたすべてのExcelファイルを検索したい?
fselect "name, path, created FROM C:/Work/Projects WHERE name LIKE '%report%' AND extension = 'xlsx' AND created > '2024-01-01'"
Everything ではこのレベルの詳細検索はできませんが、fselect なら簡単に処理できます。
類似ツールとの比較
| 項目 | fselect | Everything | システム検索 |
|---|---|---|---|
| クエリ構文 | SQL | キーワード | キーワード |
| 複雑な条件の組み合わせ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| 検索速度 | 高速(インデックス) | 非常に高速(NTFSインデックス) | 低速 |
| 統計集計 | 対応 | 非対応 | 非対応 |
| グラフィカルインターフェース | なし(純コマンドライン) | あり | あり |
| 学習曲線 | 中〜高 | 非常に低い | 低い |
fselect が適している人:コマンドラインに慣れていて、特定の条件でファイルを検索する必要が頻繁にある人、またはファイル情報をバッチ集計する必要がある人。
ユーザーの声
- Hacker News:「ついに誰かが、私が何年も欲しかった『SELECT * FROM files WHERE…』ツールを作ってくれた。」
- 知乎プログラマー @ByteFlow:「fselect でファイル検索を初めて使ったとき、まるで神の視点を得たような気分だった。」
- Reddit r/commandline:「fselect は、すべての開発者がWindows検索に望む姿そのもの。」
長所と短所
長所
- SQL表現は非常に強力で、複雑なクエリも簡単
- インデックス最適化により高速検索
- クロスプラットフォーム対応(Windows/Mac/Linux)
- 他のコマンドラインツールとパイプで連携可能
- 集計、グループ化、並べ替えなどの高度な機能に対応
短所
- 純コマンドラインで、グラフィカルインターフェースなし
- SQL構文の学習が必要(基本的なSQLで十分だが)
- デフォルトで自動インデックス化されず、ディレクトリの初回検索はやや遅い
- 一部のシナリオで中国語ファイル名に問題が生じる可能性あり
- 単にファイルを素早く見つけたい一般ユーザーには不向き
ダウンロードとインストール
Windowsインストール
方法1:Scoop経由(推奨)
scoop install fselect
方法2:Chocolatey経由
choco install fselect
方法3:GitHubからダウンロード
- https://github.com/jhspetersson/fselect/releases
- お使いのシステムのバイナリをダウンロードし、解凍してPATHに追加
注意:ScoopまたはChocolateyでインストールすると、環境変数が自動的に設定されるため、手動ダウンロードよりはるかに便利です。
クイックスタート
- インストール後、ターミナル(CMDまたはPowerShell)を開く
- 最もシンプルな検索を試す:
fselect "name FROM C:/Users" LIMIT 10 - タイプでフィルタリング:
fselect "name, path FROM C:/Downloads WHERE type = 'image'" - サイズでフィルタリング:
fselect "name, size FROM C:/ WHERE size > 100m" - 集計を試す:
fselect "COUNT(*), extension FROM D:/Documents GROUP BY extension"
よく使うクエリテンプレート
# 最近変更された大ファイルを検索
fselect "name, path, modified FROM C:/ WHERE size > 500m AND modified > '2025-01-01'"
# ファイルタイプと合計サイズをカウント
fselect "COUNT(*), SUM(size), extension FROM D:/Projects GROUP BY extension ORDER BY COUNT(*) DESC"
# 拡張子とキーワードでファイルを検索
fselect "name, path FROM C:/Work WHERE extension IN ('pdf', 'docx') AND name LIKE '%report%'"
# 空のファイルを検索
fselect "name, path FROM E:/Backup WHERE size = 0"
まとめ
fselect はすべての人のためのツールではありません。一般ユーザーは Everything で十分です。しかし、開発者、データアナリスト、または頻繁に複雑な条件でファイルを探すパソコンヘビーユーザーにとって、fselect は Everything では実現できない柔軟性を提供します。
fselect "SELECT * FROM files WHERE..." を使ってハードドライブを調査することに慣れると、ファイルシステム全体がデータベースのように感じられます — 必要なものは何でも検索できます。
一言でまとめると:すべてはSQLにできる。ファイル検索も例外ではない。