我经常需要在工作站上的一组 git 存储库中查找与特定名称或类型匹配的文件。但是,该存储库中的某些子目录只能由 root 读取,因此任何调用find
都会使实际结果被无休止的find: './chroot/foo/bar/
...流淹没: Permission denied
。我知道这可以用 抢占-prune
或压制2>/dev/null
,但我真正想要的是能够设置一个包含各种文字和正则表达式的文件(如文件.gitignore
),并跳过与该文件中的行匹配的任何内容。理想情况下,这只会影响在“ .ignore
”文件位置的子树中完成的搜索,但这是个好东西,不是必须的。
对于 grep-equivalent 来说,使用 ripgrep/ 是可能的rg
。我预计使用标准版本无法做到这一点find
,但是是否有类似的工具可以做到这一点?
注意:我也考虑过重新定义find
为builtin find -path './chroot/' -prune -or $@
,但是有多个不同的存储库包我需要这个,并且在不造成附带损害的情况下很难设置该别名。
答案1
fdfind
将默认尊重.ignore
、.gitginore
和文件:.fdignore
-I, --no-ignore
Show search results from files and directories that would otherwise be ignored by .gitignore, .ignore or .fdignore files.
除此之外,您还可以指定自定义忽略文件:
--ignore-file path
Add a custom ignore-file in '.gitignore' format. These files have a low precedence.
不要忘记添加alias fd='fdfind'
到您的.bashrc