LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2130|回复: 8

有关find的用法

[复制链接]
发表于 2006-2-24 15:33:34 | 显示全部楼层 |阅读模式
我在书上看到:
“如果希望在/apps目录下查找文件,但不希望在/apps/bin目录下查找,可以用:
$ find /apps -name "/apps/bin" -prune -o -print

但试了一下,不对,好象还是在/apps/bin目录下查找了。
-name选项不是指定查找的文件名的吗?加上-prune选项就指定不用查找的目录了吗?
另外还想问一下的是 -o 在这里起的什么作用?我用man find看了一下,没它的介绍。

3ks
发表于 2006-2-25 07:23:58 | 显示全部楼层
  1. find /apps -name "something" -path "apps/bin" -prune -o -print
复制代码
-o的用法在manpage里有啊。仔细看看
回复 支持 反对

使用道具 举报

发表于 2006-2-25 07:37:39 | 显示全部楼层
楼主漏贴了 -path "somepath" 这一小段,所以运行结果不符合原意。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-27 08:27:05 | 显示全部楼层
谢谢上面两位老兄的指点,我按照你们说的试了一下,可感觉还是不太对。
你们看我这么试对吗?
我在/home下有两个子目录/home/sap和/home/wang,而在/home/wang中有个文件叫yang,现在我想查找这个文件,但我又不想在/home/sap中查找,所以我就用下面这个命令。
#pwd
/home
#find . -name "yang" -path './sap' -prune -print
结果什么都没有输出。
如果用命令 #find . -name "yang" -path './sap' -prune -o -print
会输出好多项,这里-o是不是-or的意思啊,就是前面的执行结果为false后面的才执行的那种意思。
回复 支持 反对

使用道具 举报

发表于 2006-2-27 10:26:00 | 显示全部楼层
sorry, should be
  1. find . -path './sap' -prune -o -name "yang" -print
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-27 10:39:55 | 显示全部楼层
谢谢yongjian兄,但我还是不清楚-o选项的意思,我看man find还是没查到,请yongjian兄能不能指点一下啊。
另外,小弟又遇到了一个问题。
#find . -type f -exec ls -l {} \;
find: paths must precede expression
Usage: find [path...] [expression]
这是怎么回事啊?谢谢了。
回复 支持 反对

使用道具 举报

发表于 2006-2-27 11:23:42 | 显示全部楼层
expr1 -o expr2
              Or; expr2 is not evaluated if expr1 is true.
find . -path './sap' -prune -o -name "yang" -print
在 当前目录 查找,如果目录是 sap 的话就越过,如果不是的话,判断是否名字为 yang,是的话,就打印出来。

虽然不知道你想干什么,但是这句话在我这里是没错的,可以运行。
$ find --version
GNU find version 4.2.25
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-27 12:21:53 | 显示全部楼层
谢谢楼上的,我这下明白了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-27 12:34:23 | 显示全部楼层
再问,
我用下列两个命令
#find . -path './sap' -prune -o -name "yang" -print  
#find . -path './sap' -o -name "yang" -print
输出的结果都是相同的,而用
#find . -path './sap' -prune -name "yang" -print
时却没有输出任何东西,说明这个命令是错误的,-prune选项本身不是就有不在当前指定目录中查找的意思吗,为什么还要用-o呢?

#find . -path './sap' -prune -name "yang" -print
这个命令不合理吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表