Linux 查找中排除目录的问题

Linux 查找中排除目录的问题

尝试从查找中排除一组目录让我抓狂!我想要做的是查找目录树中的所有 .java 文件,但忽略测试目录中的所有文件。因此,我尝试过:

find . -name "*.java" -not -path "test"

find . -name "*.java" -path "test" -prune

以及其中的几种变体。但是 - 根据变体 - 我要么获得所有 java 文件(包括测试目录中的文件),要么一个都没有。我查看了 SU 上的其他问题(例如这个这个),但它们要么没有解决我的情况,要么我忽略了一些东西。

我正在使用 gnu find 4.2.27(fwiw,在 centos 5.5 上,使用 gnu bash 3.2.25)。

编辑:抱歉,我应该最初指定我需要做一个

-exec grep blah {} \;

因此在这种情况下,通过 grep -v 管道对我来说不起作用。

答案1

这应该有效:

find -path '*/test/*' -prune -o -name '*.java' -exec grep blah {} \;

答案2

综合上述提示,这将递归搜索 PHP 文件但排除几个目录,然后将它们压缩起来。

查找 -name locallibs -prune -o -name libs -prune -o -name wiki -prune -o -name tmp -prune -o -name '*.php' -exec zip all.zip {} \;

相关内容