3、忽略某个目录

如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,那么可以使用- p r u ne选项来指出需要忽略的目录。在使用- p r u n e选项时要当心,因为如果你同时使用了- d e p t h选项,那么- p r u ne选项就会被f i n d命令忽略。

如果希望在/ a p p s目录下查找文件,但不希望在/ a p p s / b i n目录下查找,可以用:

$ find /apps -path "/apps/bin" -prune -o -print

-perm选项中,我的解析
还有一种表达方法:在八进制数字前面要加一个横杠-,表示都匹配,如-007就相当于777,-006相当于666
不知对不对



您对本贴的看法:鲜花[1]臭蛋[0]
wingger  find忽略某个目录-LMLPHP (一切即将开始)
荣誉版主-大法师

find忽略某个目录-LMLPHP

find忽略某个目录-LMLPHP
find忽略某个目录-LMLPHP  
CU编号:68267
注册:2003-7-9
最后登录:2009-05-31
帖子:8852
精华:79

可用积分:8003(腰缠万贯)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间][短信][博客]


20楼发表于 2004-11-10 14:56 

shell基础二:查找技巧,find及xargs的使用

补一个:使用find查找文件的时候怎么避开某个文件目录

比如要在/usr/sam目录下查找不在dir1子目录之内的所有文件

find /usr/sam -path "/usr/sam/dir1" -prune -o -print  



QUOTE:
find [path ..] [expression] 在路径列表的后面的是表达式
-path "/usr/sam" -prune -o -print 是 -path "/usr/sam" -a -prune -o-print 的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 || 类似如果 -path"/usr/sam" 为真,则求值 -prune , -prune 返回真,与逻辑表达式为真;否则不求值 -prune ,与逻辑表达式为假。如果 -path "/usr/sam" -a -prune 为假,则求值 -print ,-print 返回真,或逻辑表达式为真;否则不求值-print,或逻辑表达式为真。  

这个表达式组合特例可以用伪码写为

if -path "/usr/sam"  then
          -prune
else
          -print

避开多个文件夹

QUOTE:
find /usr/sam \( -path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -print

圆括号表示表达式的结合。
\ 表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。


查找某一确定文件,-name等选项加在-o 之后

#find /usr/sam  \(-path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -name "temp" -print
10-16 18:38
查看更多