命令行搜索(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 并回车,即可进入全屏交互式搜索界面:
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 窗口中使用动作菜单与预览。