我想在目录树中搜索匹配特定模式的常规文件,例如
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接近我想要的,但还没有真正回答。)