支持.ignore 文件的“find”等效项?

支持.ignore 文件的“find”等效项?

我经常需要在工作站上的一组 git 存储库中查找与特定名称或类型匹配的文件。但是,该存储库中的某些子目录只能由 root 读取,因此任何调用find都会使实际结果被无休止的find: './chroot/foo/bar/...流淹没: Permission denied。我知道这可以用 抢占-prune或压制2>/dev/null,但我真正想要的是能够设置一个包含各种文字和正则表达式的文件(如文件.gitignore),并跳过与该文件中的行匹配的任何内容。理想情况下,这只会影响在“ .ignore”文件位置的子树中完成的搜索,但这是个好东西,不是必须的。

对于 grep-equivalent 来说,使用 ripgrep/ 是可能的rg。我预计使用标准版本无法做到这一点find,但是是否有类似的工具可以做到这一点?

注意:我也考虑过重新定义findbuiltin 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

相关内容