命令列搜尋(lff)
Lertaro 附帶了一個輕量高效的命令列伴侶工具 lff(Lertaro Fuzzy Finder)——一個專為終端機與指令碼開發者打造的互動式模糊尋找工具。它直接透過本機具名管道與 Lertaro App 處理程序通訊,直接復用背景已建置的極速記憶體索引,無需在終端機中重新掃描磁碟。
1. 為什麼選擇 lff
- 共用索引,零 I/O 延遲:與
fzf或find等傳統工具每次從頭巡覽磁碟不同,lff毫秒級直接查詢 Lertaro 維護的千萬級檔案索引樹。 - 一致的強大搜尋語法:完全繼承 Lertaro 的模糊跳躍比對、中文拼音別名比對與修飾符語法(詳見搜尋語法)。
- 快速失敗機制:
lff會自動偵測 Lertaro App 的執行狀態。若主程式未啟動,會立即向stderr列印易懂的錯誤提示並結束,絕不封鎖終端機會話。
2. 安裝與 PATH 設定
lff.exe 隨 Lertaro 主程式一同打包分發:
- 安裝版:在安裝精靈的工作選取介面中勾選將 lff 命令列搜尋工具新增到 PATH,即可在任意終端機視窗中直接輸入
lff執行。 - 便攜版:將解壓目錄手動新增至系統的使用者或系統
PATH環境變數中。
NOTE
修改 PATH 後,請新開啟一個終端機視窗以使環境變數生效;目前已開啟的終端機無法感知外部環境變數的變更。
3. 互動介面與操作按鍵
在終端機中輸入 lff 並按 Enter,即可進入全螢幕互動式搜尋介面:
lff常用互動快速鍵
| 按鍵 | 功能說明 |
|---|---|
| 直接輸入字元 | 即時模糊過濾搜尋結果(支援中文拼音首字母與全拼)。 |
↑ / ↓ | 向上 / 向下移動目前反白項目。 |
Page Up / Page Down | 向上 / 向下快速翻頁。 |
← / → | 在底部搜尋輸入框中左右移動游標。 |
Tab | 切換選取/取消選取目前反白項目(被多選標記的行會帶有 * 標識)。 |
Enter | 將所有標記的路徑(若無標記則輸出目前反白項目路徑)輸出至 stdout 並結束。 |
Esc 或 Ctrl+C | 不輸出任何內容,直接安全結束。 |
4. 非互動式搜尋
當指令碼只需要搜尋結果、不需要開啟互動介面時,可以使用 --search:
# 輸出最多 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. 預填關鍵字與管道傳參
你可以直接在啟動參數中指定初始搜尋詞,或透過標準輸入管道傳入:
# 參數預填
lff report
# 管道傳入
echo report | lff兩種方式都會自動以 report 作為初始過濾詞開啟互動介面,你可以繼續鍵盤微調或直接按 Enter 確認輸出。
6. 多選標記與批次輸出
按下 Tab 鍵可以標記目前行。值得注意的是,標記狀態在變更搜尋關鍵字後依然會被保留。
這意味著你可以先搜尋 doc 標記幾個 Word 文件,再清空輸入 pdf 標記幾個 PDF 報表,最後統一按下 Enter 鍵——lff 會將所有跨多次搜尋選取的檔案路徑以換行符號分隔逐行輸出至標準輸出。
7. Shell 指令碼與命令聯動實戰
lff 的 TUI 介面直接繪製在主控台緩衝區,不會污染標準輸出串流。只有使用者最終確認選取的檔案路徑才會寫入 stdout,因此可以與各類 Shell 語法無縫組合:
PowerShell 常用聯動
# 使用 VS Code 開啟檢索到的檔案
code (lff)
# 獲取選取路徑並賦值給變數
$target = lff; cd $target
# 將檢索結果作為物件傳遞給後續管道
lff | Get-Item | Select-Object Name, Length, LastWriteTimeCMD / Batch 批次處理聯動
:: 使用 for 迴圈逐行處理選取的路徑
for /f "delims=" %i in ('lff') do code "%i"8. 使用局限與設計邊界
- 依賴前景 App:
lff自身不包含索引邏輯,必須在 Lertaro App 執行期間使用。 - 無圖形預覽:命令列工具專注於極速路徑輸出與管道組合,如需富文字/音訊影片即時預覽,請在 GUI 視窗中使用動作功能表與預覽。