文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>温习关于find的查找命令

温习关于find的查找命令

时间:2006-06-18  来源:CUDev

<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8"><title></title><meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)"><meta name="CREATED" content="20060618;9593800"><meta name="CHANGED" content="20060618;10215000"> <style> </style>

find命令忽略某个目录查找

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

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

CODE:


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



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

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

CODE:


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,或逻辑表达式为真。

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

CODE:


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 之后

CODE:


#find /usr/sam \(-path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -name "temp" -print


跟双引号没系
find -path "/path/dir" -prune -o -print 和:
find -path /path/dir -prune -o -print
是一样的效果
find \( -path "/path/dir1" -o -path "/path/dir2" \) -prune -o -print 和:
find \( -path /path/dir1" -o -path "/path/dir2 \) -prune -o -print
是一样的,错误处在红字部分,即\(和\),他们两边要有空格

find \( -path "/path/dir1" -o -path "/path/dir2" \) -prune -o -print是能完全避开 "/path/dir1"和"/path/dir2"的。
把find -path "/path/dir1" -o -path "/path/dir2" -prune -o -print 改成find -path "/path/dir1" -o -path "/path/dir2" -prune -o -exec ls -l {} \;能看得比较清楚。这个命令中不会有ls -l /path/dir1和ls -l /path/dir2,但会ls -l /path/dir1下的文件,所以用-print参数的话看上去是避不开了。
我觉得还是没有了括号,按照
if -path "/usr/sam/dir1" -o -path "/usr/sam/file1"
then
-prune
else
-print
执行了的原因

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载