我尝试在我的工作目录中使用此命令
find . -type d \( ! -name .git -prune \) -o \( ! -name .hg -prune \)
似乎不起作用?
删除修剪只会排除.git
或.hg
目录,而不会排除其子目录
答案 0 :(得分:4)
find . \( -name .git -o -name .hg \) -prune -o -type d -print
答案 1 :(得分:2)
我的答案与@ Barmar的答案基本相同,我赞成了:
find . \( -name .git -o -name .hg \) -prune -o \( -type d -print \)
关于此命令的一点解释可能对您有所帮助:
此处-o
表示OR
。当find
找到与.git
或.hg
匹配的文件名时,由于-prune
选项而停止进一步搜索并评估为true
,因此会跳过另一个-o
{1}}分支(即目录打印)。这就是为什么只显示那些不包含.git
或.hg
的目录。
您也可以在SO上提及此问题:How to use '-prune' option of 'find' in sh?