如何阻止查找打印.git文件夹?

时间:2010-05-13 05:00:02

标签: find

我运行find命令来查找名称中包含foo的文件。

我想跳过.git目录。下面的命令工作除了它打印一个 每当它跳过.git目录时都会感到烦恼.git

find . ( -name .git ) -prune -o -name '*foo*'

如何防止跳过的.git目录 打印到标准输出?

3 个答案:

答案 0 :(得分:8)

所以只是为了更好的可见性:

find -name '.git*' -prune -o -name '*foo*' -print

这也省略了.gitignore文件;注意尾随 -print 以省略打印,-prune停止下降到它,但没有-print打印它。扭曲的C;

答案 1 :(得分:3)

find . -not -wholename "./.git*" -name "*foo*"

或更严格地说,如果您不想看到.git /但想要搜索其名称也以.git(.git-foo/bar/...)开头的其他目录

find . -not -wholename "./.git" -not -wholename "./.git/*" -name "*foo*"

有点奇怪但效率更高,因为它修剪整个.git目录:

find . -not \( -wholename "./.git" -prune \) -name "*foo*"

答案 2 :(得分:1)

试试这个:

find . -name '*foo*' | grep -v '\.git'

这仍将遍历.git目录,但不会显示它们。或者您可以与您的版本结合使用:

find . ( -name .git ) -prune -o -name '*foo*' | grep -v '\.git'

你也可以不用grep来实现:

find . ( -name .git ) -prune -printf '' -o -name '*foo*' -print