防止Unix"找到"命令从递归到匹配的目录

时间:2015-03-18 09:18:29

标签: git bash unix recursion find

考虑以下命令来查找和更新特定目录中的所有git repos:

find . -type d -name .git | while read src_dir; do
    my_git_update "${1}";
done;

假设一个repo不能包含其他repos,所以没有必要深入到该目录。我没有使用子模块等,所以嵌套的情况不计算这个问题。所以总的来说......

有没有办法让find在找到匹配项后停止递归到目录?

根据我的搜索,答案可能在于-prune,但我无法弄清楚如何在我的情况下使用它。


Unix 'find' without descending into matched directories 重复,尽管有标题。它侧重于删除子目录 - 该解决方案不适用于此。

1 个答案:

答案 0 :(得分:0)

你是对的,答案是-prune

  

此主要内容始终评估为true。它导致找不到                下降到当前文件。请注意,-prune主要版本没有                如果指定了-d选项,则会生效。

-d-depth在此特定find中基本上是同义词。

-print比较:

  

此主要内容始终评估为true。它打印的路径名                当前文件到标准输出。

这意味着您以相同的方式使用它们:在测试先前的条件并确定您位于不应递归遍历的目录之后,只需-prune它就可以继续前进到下一个目录。 (-d使其无效的原因是-dfind代码已经运行了目录中的所有内容,因此继续前进的修剪步骤即将发生的事情无论如何。)