Skip to content

コマンドライン検索(lff)

Lertaro には、ターミナルユーザーやスクリプト開発者向けに設計された軽量で強力なコマンドラインツール lff(Lertaro Fuzzy Finder)が付属しています。ローカルの名前付きパイプ経由で起動中の Lertaro App と通信し、ディスクを再スキャンすることなくインメモリインデックスをそのまま利用します。

1. lff の特徴とメリット

  • インデックス共有によるゼロ I/O 遅延:毎回ディスクを走査する fzffind とは異なり、Lertaro が保持する数百万件規模のメモリインデックスをミリ秒未満で高速に検索します。
  • 統一された検索構文:あいまいジャンプ一致、中国語ピンインエイリアス、各種修飾演算子(検索構文 参照)を完全に引き継いでいます。
  • 高速フェイルセーフ:Lertaro App が実行されていない場合は、stderr にエラーメッセージを出力して即座に終了し、ターミナルをフリーズさせません。

2. インストールと PATH 設定

lff.exe は Lertaro パッケージに同梱されています。

  • インストーラー版:インストールウィザードで「lff コマンドライン検索ツールを PATH に追加」にチェックを入れると、任意のターミナルから lff と入力して実行できるようになります。
  • ポータブル版:解凍先フォルダーをユーザーまたはシステムの環境変数 PATH に手動で追加してください。

NOTE

PATH を追加・変更した後は、設定を反映させるために新しいターミナルウィンドウを開いてください。

3. インターフェースとキー操作

ターミナルで lff と入力して Enter を押すと、対話型検索画面が開きます。

bash
lff

主なショートカット一覧

キー説明
文字入力検索結果をリアルタイムにあいまい絞り込み。
/ 選択ハイライトを上下に移動。
Page Up / Page Downページ単位で高速スクロール。
/ 検索入力欄のカーソルを左右に移動。
Tab選択項目のマーク/解除を切り替え(マークされた行には * が付きます)。
Enterマークされた全パス(マークがない場合は現在の選択項目のパス)を stdout に出力して終了。
Esc または Ctrl+C何も出力せずに安全に終了。

4. 非対話型検索

対話型画面を開かずに検索結果を取得したいスクリプトでは、--search を使用します。

bash
# 一致するパスを最大 20 件出力
lff --search "report"

# 完全な結果セットを並べ替えてから、先頭 50 件に絞り込む
lff --search "report" --limit 50

# 指定したディレクトリとその配下のファイルだけを検索
lff --search "report" --files --path "D:\Documents"

# フォルダーだけを検索
lff --search "report" --folders

# 結果のメタデータを含む 1 つのコンパクトな JSON 配列を出力
lff --search "report" --json

完全な結果セットを並べ替えてから --limit を適用します。--limit を指定しない場合は最大 20 件です。通常の出力は 1 行に 1 パス、--json の出力は NDJSON ではなく 1 つの JSON 配列です。各 JSON 項目には名前、パス、ディレクトリかどうか、ドライブ、属性、サイズ、作成・更新・アクセス時刻が含まれます。このモードは対話型画面と同じ検索構文を使用し、Lertaro App の起動が必要です。

--files--folders は同時に指定できません。--path を指定すると、検索範囲がそのディレクトリと配下に限定されます。

5. 検索語の事前指定とパイプ入力

コマンド引数または標準入力パイプから初期検索語を渡すことができます。

bash
# 引数で渡す
lff report

# 標準入力パイプで渡す
echo report | lff

どちらの方法でも、report が入力された状態で画面が開き、そのまま絞り込みを調整したり Enter で確定できます。

6. 複数選択と一括出力

Tab キーで項目をマークできます。マーク状態は検索キーワードを変更しても保持されます

例えば doc で検索して Word ファイルをマークし、検索欄をクリアして pdf で検索して PDF ファイルをマークした後に Enter を押すと、複数回の検索にまたがってマークされた全パスが改行区切りで標準出力に一括出力されます。

7. シェルスクリプトとの連携例

lff の対話画面はコンソールバッファに直接描画され、標準出力ストリームを汚しません。確定されたパス文字列のみが stdout に書き込まれるため、他のコマンドと簡単にパイプ連携できます。

PowerShell での連携

powershell
# 検索したファイルを VS Code で開く
code (lff)

# 選択したフォルダーへ移動
$target = lff; cd $target

# 検索結果を FileInfo オブジェクトとしてパイプに渡す
lff | Get-Item | Select-Object Name, Length, LastWriteTime

CMD / バッチファイルでの連携

cmd
:: for ループで選択したパスを 1 行ずつ処理
for /f "delims=" %i in ('lff') do code "%i"

8. 留意事項と設計上の割り切り

  • App の起動が必要lff 自体はインデックス作成を行わないため、Lertaro App が起動している必要があります。
  • GUI プレビュー非搭載:ターミナルでの高速なパイプ処理に特化しています。リッチテキストやメディアのプレビューが必要な場合は、GUI の アクションとプレビュー をご利用ください。