Skip to content

命令列搜尋(lff)

Lertaro 附帶了一個輕量高效的命令列伴侶工具 lff(Lertaro Fuzzy Finder)——一個專為終端機與腳本開發者打造的互動式模糊尋找工具。它直接透過本機具名管道與 Lertaro App 程序通訊,直接復用後台已構建的極速記憶體索引,無需在終端機中重新掃描磁碟。

1. 為什麼選擇 lff

  • 共享索引,零 I/O 延遲:與 fzffind 等傳統工具每次從頭巡覽磁碟不同,lff 毫秒級直接查詢 Lertaro 維護的千萬級檔案索引樹。
  • 一致的強大搜尋語法:完全繼承 Lertaro 的模糊跳躍比對、中文拼音別名比對與修飾符語法(詳見搜尋語法)。
  • 快速失敗機制lff 會自動偵測 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 並退出。
EscCtrl+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

# 輸出包含結果中繼資料的單一緊湊 JSON 陣列
lff --search "report" --json

完整結果集會先排序,再套用 --limit。未指定 --limit 時最多輸出 20 條結果。一般輸出每行一個路徑;使用 --json 時輸出一個 JSON 陣列,而不是 NDJSON。每個 JSON 項目包含名稱、路徑、是否為目錄、磁碟機、屬性、大小,以及建立、修改和存取時間。此模式使用與互動介面相同的搜尋語法,並要求 Lertaro App 正在執行。

--files--folders 不能同時使用。--path 會將搜尋範圍限制為指定目錄及其所有子目錄。

5. 預填關鍵字與管道傳參

你可以直接在啟動參數中指定初始搜尋詞,或透過標準輸入管道傳入:

bash
# 參數預填
lff report

# 管道傳入
echo report | lff

兩種方式都會自動以 report 作為初始過濾詞開啟互動介面,你可以繼續鍵盤微調或直接按 Enter 確認輸出。

6. 多選標記與批次輸出

按下 Tab 鍵可以標記當前行。值得注意的是,標記狀態在更改搜尋關鍵字後依然會被保留

這意味著你可以先搜尋 doc 標記幾個 Word 文件,再清空輸入 pdf 標記幾個 PDF 報表,最後統一按下 Enter 鍵——lff 會將所有跨多次搜尋選取的檔案路徑以換行符分隔逐行輸出至標準輸出。

7. Shell 腳本與命令聯動實戰

lff 的 TUI 介面直接繪製在主控台緩衝區,不會污染標準輸出串流。只有用戶最終確認選取的檔案路徑才會寫入 stdout,因此可以與各類 Shell 語法無縫組合:

PowerShell 常用聯動

powershell
# 使用 VS Code 開啟檢索到的檔案
code (lff)

# 獲取選取路徑並賦值給變數
$target = lff; cd $target

# 將檢索結果作為物件傳遞給後續管道
lff | Get-Item | Select-Object Name, Length, LastWriteTime

CMD / Batch 批次處理聯動

cmd
:: 使用 for 迴圈逐行處理選取的路徑
for /f "delims=" %i in ('lff') do code "%i"

8. 使用局限與設計邊界

  • 依賴前台 Applff 自身不包含索引邏輯,必須在 Lertaro App 運行期間使用。
  • 無圖形預覽:命令列工具專注於極速路徑輸出與管道組合,如需富文本/音訊影片即時預覽,請在 GUI 視窗中使用動作選單與預覽