为什么“查找”没有按照我想象的方式进行修剪?

为什么“查找”没有按照我想象的方式进行修剪?

我正在运行 MacOSX 10.5.8

我运行以下命令:

~/Sites/jjprof/trunk/content > find . -type d -name '*svn' -prune
./.svn
./resources/.svn
./resources/sitewide/.svn
./temporary/.svn
./users/.svn
./users/avatars/.svn

我希望这个命令忽略所有 .svn 子目录;而是显示它们。

find . -name '*svn' -prune 

做同样的事情。

答案1

尝试这个:

find -type d -path '.svn' -prune -o -print

man find在以下部分下-name

要忽略目录及其下的文件,请使用 -prune;参见 的描述中的示例
-path

在以下部分下-path

要忽略整个目录树,请使用-prune而不是检查树中的每个文件。例如,要跳过目录 src/emacs 及其下的所有文件和目录,并打印找到的其他文件的名称,请执行以下操作:

             find . -path ./src/emacs -prune -o -print

摘自“示例”部分:

但是,-prune操作本身返回 true,因此以下操作-o可确保仅对未被修剪的目录评估右侧(修剪目录的内容甚至未被访问,因此它们的内容无关紧要)。

答案2

寻找手册指出,修剪“忽略前面的路径......”,因此命令应该是

find . -prune -type d -name '*svn'

这是因为你可以有类似的东西

find -path . -name '*svn' -o -path './notimportantdir' -prune

在当前路径中找到 '*svn'除了那些不重要的目录

相关内容