我运行find
命令来查找名称中包含foo
的文件。
我想跳过.git
目录。下面的命令工作除了它打印一个
每当它跳过.git
目录时都会感到烦恼.git
:
find . ( -name .git ) -prune -o -name '*foo*'
如何防止跳过的.git
目录
打印到标准输出?
答案 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