我正在运行 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'除了那些不重要的目录