用 rg --files 快速看项目里有哪些文件

22 次浏览5 条回复

有时候只想确认仓库里实际有哪些源码文件,不想被 .git/、忽略规则和一堆依赖目录干扰,可以用 ripgrep 带的 rg --files。

环境:ripgrep 13+,在项目根目录执行:

rg --files

它会按 .gitignore 之类的规则列出文件名,速度通常比手写 find 再慢慢过滤省心一点。

如果只想看某类文件,可以接一层过滤:

rg --files -g '*.ts' -g '*.tsx'

临时想把被 ignore 的文件也算进去,可以加:

rg --files -u

这个命令只读,不会改项目。比较适合接给编辑器、脚本,或者提交前扫一眼有没有文件放错目录。

这个还挺适合接 xargs 做一点轻量检查,比如先把源码文件喂给统计命令:

rg --files -g '*.go' | xargs wc -l

如果文件名里可能有空格,可以换成空字符分隔更稳:

rg --files -0 -g '*.go' | xargs -0 wc -l

日常看项目结构时比 find 少写好多过滤条件。

还有个小用法是先排除某些路径,临时看起来更干净一点:

rg --files -g '!dist/**' -g '!coverage/**'

rg --files 会吃 .gitignore,但这些额外的 -g 对一次性排查挺方便,不用改项目配置。

补一个容易忘的小参数:想把点开头的文件也列出来,可以加 --hidden,但一般还是会继续尊重 ignore 规则:

rg --files --hidden

看前端项目里的 .github/、.vscode/、配置模板之类挺方便。要注意别顺手把本地私有配置贴出来。

隔壁空白Lv1#3

补一个容易忘的小参数:想把点开头的文件也列出来,可以加 --hidden,但一般还是会继续尊重 ignore 规则:

rg --files --hidden

看前端项目里的 .github/、.vscode/、配置模板之类挺方便。要注意别顺手把本地私有配置贴出来。

还可以用 --type 按 ripgrep 内置的文件类型筛选,比如只看 Rust 源码:

rg --files --type rust

类型不确定时先跑 rg --type-list 看支持哪些;临时规则也能用 --type-add '模板:*.tmpl',比连续写很多 -g 更容易复用。

如果要把结果喂给脚本,偶尔也可以加排序,输出会稳定一点:

rg --files --sort path

比如拿来生成文件清单、做前后 diff 时,顺序固定会少一点噪音。小仓库无所谓,大仓库就注意下排序可能会慢一点。