现代Linux命令行三剑客

fd, ripgrep, fzf 这三款工具通常被称为“现代Linux命令行三剑客”,它们分别解决了找文件、搜内容和选目标这三个核心痛点。

核心差异概览

工具 定位 替代的传统命令 核心优势
fd 找文件名 find 极快,默认忽略 .gitignore,语法简单
ripgrep (rg) 搜文件内容 grep / ack 速度世界第一,支持多种编码,正则支持极佳
fzf 模糊搜索筛选 N/A (交互式工具) 能够将任何列表变成可搜索的下拉菜单

1. fd:快速找文件

fd 旨在替代复杂的 find 命令。它默认会递归搜索并过滤掉隐藏文件和 .gitignore 中的内容。

  • 使用场景:只记得文件名的一部分,想快速定位文件。
  • 具体例子:
$ fd config
找所有名字里带 "config" 的文件
     
$ fd -g "*.js"
找js文件
     
$ fd -t d src
只找文件夹
     
$ fd -e py
按扩展名查找: 找所有 .py 脚本。
     
$ fd -e jpg -x rm
执行命令:找到所有图片并直接删除

$ fd --size +100m
找出磁盘中所有的大文件

$ fd --changed-within 1h
把最近一小时改过的文件全列出来

2. ripgrep (rg):极速搜内容

ripgrep 是目前公认最快的内容文本搜索工具,其处理大规模代码库的速度远超传统grep。

  • 使用场景:想知道某个变量或字符串在哪个文件的哪一行。
  • 具体例子:
$ rg "import"
列出包含import内容的文件和内容信息

$ rg -t py "main"
搜索python文件中main函数

$ rg -T js "config"
搜索除js文件外的所有文件中包含config的内容

$ rg main -t cpp src/
限制范围:只在 src 文件夹的 C++ 文件里搜 "main"

$ rg "error_code" -C 2
多行搜索:通过 -C 查看匹配行的上下各 2 行背景信息

$ rg -l "import"
只列出包含关键字的文件

rg 和 fzf 命令联动

$ rg -l "import" | fzf --preview 'rg -n --color=always -C 3 "import" {}'
rg搜出文件传给fzf,右边关键词高亮+上下文预览,切换左侧文件跟着切换预览

我们还可以把这个功能包装成一个函数,加入到.zshrc中

function rgf() {
   rg -l "%1" | fzf --preview "rg -n --color=always -C 3 '$1' {}";
}

3. fzf:交互式模糊过滤器

fzf 不是文件工具,而是一个过滤器。它通常配合其他命令的输出使用,提供一个实时搜索的交互界面。

  • 使用场景:在几千个选项里,通过“模糊匹配”选出你想要的那一个。
  • 具体例子:

基本使用

$ ^ghostty
在列表中搜以ghostty开头的

$ git$
在列表中搜以git结尾的

$ vim $(fd -t f | fzf)
组合使用: 用 fd 找文件,传给 fzf 筛选,最后用 vim 打开
  • 历史命令模糊搜索:按下 Ctrl + R 后,可以在列表中模糊搜索执行过的历史命令
  • ** + Tab 模糊补全,kill补进程、ssh补主机、vim补文件
  • 任何命令需要文件路径,写个$(fzf)弹出来搜,选中自动替换。比如: bat $(fzf)
  • fzf接管道万物皆可搜,git分支搜完直接切换、进程搜完直接杀掉
$ git branch | fzf | xargs git checkout
把git分支列表传给fzf,选择后直接checkout分支

还可以把这个命令定义成alias

alias gco="git branch | fzf | xargs git checkout"

所以总结下这三个工具的使用建议:

  • 如果你想找路径:用 fd
  • 如果你想搜代码:用 rg
  • 如果你想选东西:把输出管道给 fzf

三者联动(例如:rg "keyword" | fzf)是目前 Linux 中公认的[最佳终端工作流组合]。

posted @ 2026-04-12 17:38  jigsawecho  阅读(10)  评论(0)    收藏  举报