1

我试图在我的工作目录中使用这个命令

find . -type d  \( ! -name .git  -prune \) -o \( ! -name .hg  -prune \)

似乎不起作用?

删除 prune 只会排除.gitor.hg目录,而不是它们的子目录

4

2 回答 2

4
find . \( -name .git -o -name .hg \) -prune -o -type d -print
于 2013-01-11T04:25:26.713 回答
2

我的回答与@Barmar 的回答基本相同,我对此表示赞同:

find . \( -name .git -o -name .hg \) -prune -o \( -type d -print \)

关于这个命令的一点解释可能对你有帮助:

这里的-o意思是OR。当find找到一个文件名匹配.gitor.hg时,由于-prune选项而停止进一步搜索并评估为true,因此跳过另一个-o分支(即目录打印)。这就是为什么只有那些不包含.git.hg将显示的目录。

你也可以参考这个问题:How to use '-prune' option of 'find' in sh?

于 2013-01-11T04:53:05.893 回答