fd查文件:比find少打七成命令

fd不是给高手炫技的小玩具,它解决的是每天都烦人的事:在一堆目录里快速找文件。老命令find能做,但语法像背法条。这个工具把常用搜索变成直觉操作,速度也够狠,特别适合代码仓库、日志目录、配置文件排查。

反常识:fd快,不是最关键的优点

很多人夸fd快。我用下来,速度反倒不是最值钱的地方。真正省时间的是少犯错。find查一个后缀,经常写成find . -name "*.log";查隐藏文件、排除目录、正则匹配,又得翻笔记。fd默认就按人脑习惯来:直接输关键词,它从当前目录往下找。

我见过最典型的场景:线上机器有个配置没生效,目录里有vendor、node_modules、dist,文件几万到几十万。用find当然能查,但命令一长就容易漏引号。用它输入fd nginx,命中路径马上出来;要排除构建目录,加-E dist。少打十几个字符,排障时少一次手抖。

fd怎么用:记住这6条就够

查文件名:fd config。查某类文件:fd -e json。查目录:fd -t d cache。查普通文件:fd -t f error。忽略大小写通常不用管,它会智能判断;你输入大写字母时才按大小写处理。这个细节很贴近日常,不用额外记-i。

要搜隐藏文件,加-H。要搜被.gitignore忽略的内容,加-I。两个一起用就是fd -HI env,适合找.env、.env.local、被忽略的本地配置。我的习惯是别上来就-HI,先普通查,没结果再扩大范围。这样不会被缓存、依赖包、临时文件淹没。

fd和find的差别,别只看跑分

find像瑞士军刀,功能全,但常用动作不够顺手。fd像一把快刀,只砍最常见的活:按名字、扩展名、类型、路径过滤。它默认尊重.gitignore,这对开发者很关键。你在前端项目里找button,如果把node_modules也翻一遍,结果能多出几千行,眼睛先废。

有个坑很多教程不讲:它默认不查隐藏目录。你想找.ssh/config、.github/workflows、.vscode/settings.json,普通命令可能没结果。别怀疑文件不存在,补-H。另一个坑是正则匹配。fd log会匹配路径里带log的内容;如果你只想要log后缀,用-e log更干净。

想要完整资源?

会员专享,海量内容

立即查看 →

把fd接到其他命令,效率才拉开

单独查文件只是入门。真正好用的是接管后续动作。批量看匹配文件大小:fd -e log -x ls -lh。删除空日志前先预览:fd -e log -x echo rm {},确认没问题再去掉echo。这里的{}代表找到的路径。

我常用一条:fd -e rs -x rg "timeout" {}。意思是只在Rust文件里搜timeout,少扫一堆无关文件。大型仓库里这招很稳,比直接rg全仓库更可控。查前端也一样:fd -e ts -e tsx -x rg "useEffect" {}。先缩小文件集合,再搜内容,噪音会少很多。

安装fd时最容易踩的名字坑

macOS用brew install fd。Ubuntu/Debian里包名常叫fd-find,装完命令可能是fdfind,不是fd。想统一手感,可以加别名:alias fd=fdfind。这个坑我带新人时碰过好几次,明明装好了,终端却提示command not found。

Windows用户用scoop install fd或choco install fd。Git Bash、PowerShell都能跑。团队里如果有人跨系统协作,建议在项目README写清楚命令名差异,不然复制脚本时会卡住。小工具最怕这种五分钟问题,没人觉得难,但很耗上下文。

我的固定用法:少记参数,多靠组合

我不建议把参数表背完。日常够用的组合就三类:按扩展名搜、排除目录、把结果交给别的命令。比如fd -e yaml -E charts,可以避开Helm模板目录,只看项目自己的配置。

查错时我会按范围逐步放大:当前目录搜关键词;没结果加-e限制类型;还没有再加-HI。这个顺序能控制输出量。命令行搜索最怕一屏刷满,看似找到了很多,其实一个都没看清。

获取完整内容

加入会员,海量资源任你看

立即进入 →

常见问题

fd和find哪个好?

日常找文件用fd更顺手,默认忽略.gitignore里的目录,命令短,输出干净。需要复杂条件,比如按权限、mtime精确筛选、跨文件系统规则,find更合适。我的做法是80%的搜索用前者,脚本里涉及系统级筛选再用find。

为什么fd找不到隐藏文件?

它默认跳过隐藏文件和隐藏目录。找.github、.env、.ssh这类路径,要加-H;如果文件还被.gitignore忽略,再加-I。常用命令是fd -HI env。

fd能按文件内容搜索吗?

它主要搜文件名和路径,不负责搜内容。搜内容用rg更合适。实战里可以组合:fd -e js -x rg "fetch" {},只在JavaScript文件里查fetch,结果比全目录rg更干净。

Ubuntu安装后为什么没有fd命令?

Ubuntu/Debian的包名多为fd-find,安装后命令常叫fdfind。可以执行sudo apt install fd-find,再加alias fd=fdfind,或者在shell配置里写入这个别名。