find命令:有条件地修剪包含匹配文件的任何目录的子目录

时间:2017-07-25 20:21:10

标签: unix find pattern-matching conditional subdirectory

我想在目录树中搜索匹配特定模式的常规文件,例如

find -regex '.*\.\(expect\|missing\|ok\)'

这很好,但在我的应用程序中效率非常低 - 因为如果目录包含至少一个匹配文件,那么它的(很多,深层,文件负载)子目录都不需要被搜索,因为它们肯定是不会包含任何匹配。

那么我如何-prune子目录,只有在其父目录中找到匹配的文件?

E.g。如果我有以下树:

./a/file.ok
./a/a1/
./a/a2/
./b/file.missing
./b/file.expect
./b/b1/
./b/b2/
./c/c1/
./c/c1/c11/
./c/c1/c11/foo.expect
./c/c1/c11/foo.txt

然后我只想打印:

./a/file.ok
./b/file.missing
./b/file.expect
./c/c1/c11/foo.expect

没有实际搜索/遍历a/b/的所有子目录树

(这earlier question接近我想要的,但还没有真正回答。)

0 个答案:

没有答案