免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3069 | 回复: 14
打印 上一主题 下一主题

求问FIND命令几个模糊的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-23 16:53 |只看该作者 |倒序浏览
expr1 expr2
              And (implied); expr2 is not evaluated if expr1 is false.

       expr1 -a expr2
              Same as expr1 expr2.

       expr1 -and expr2
              Same as expr1 expr2.

       expr1 -o expr2
              Or; expr2 is not evaluated if expr1 is true.

       expr1 -or expr2
              Same as expr1 -o expr2.

       expr1 , expr2
              List;  both expr1 and expr2 are always evaluated.  The value of
              expr1 is discarded; the value of  the  list  is  the  value  of
              expr2.
按上面的说明我可以这样理解这句话吧
(当前目录下有两个文件夹dirtest,dirtest1)
find . -path "./dirtest" -o -path "./dirtest1"      我能不能这样理解 如果-path "./dirtest"是真的话就不运行-path "./dirtest1"
不过事实好象不是这样的,,不解,,,,

希望高手来帮助下

论坛徽章:
0
2 [报告]
发表于 2008-12-23 16:56 |只看该作者
你是怎么从事实看出不是这样的??

论坛徽章:
0
3 [报告]
发表于 2008-12-23 16:58 |只看该作者
-o是或者的意思吧
满足条件之一就find出来
and的话 是要同时满足

论坛徽章:
0
4 [报告]
发表于 2008-12-23 16:59 |只看该作者
find . -path "./dirtest" -o -path "./dirtest1"      我能不能这样理解 如果-path "./dirtest"是真的话就不运行-path "./dirtest1"  


按我理解的话,,就是运行了-path "./dirtest"  输出 ./dirtest就可以停止了

当事实结果是两个都运行了  输出./dirtest   ./dirtest1

论坛徽章:
0
5 [报告]
发表于 2008-12-23 17:03 |只看该作者
[root@datacenter /]# find . -name "kkg" -o -name "usr"
./home/home/kkg
./home/kkg
./home/kkg/kkg
./usr
./usr/local/src/mysql-5.0.40/innobase/usr
./usr/lib/debug/usr

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
6 [报告]
发表于 2008-12-23 17:03 |只看该作者

回复 #4 chinamail 的帖子

你还没有了解find的工作过程。

find从指定目录往下遍历每一个文件,就是根据每一个文件对表达式求值。

为什么两个都输出了?
因为它们是两个不同的文件(好像是废话),分别对表达式求两次值。

论坛徽章:
0
7 [报告]
发表于 2008-12-23 17:05 |只看该作者
黑哥说的不错, 关键就在于对于每一个文件,对表达式求值再决定后面的动作

论坛徽章:
0
8 [报告]
发表于 2008-12-23 19:10 |只看该作者
原帖由 blackold 于 2008-12-23 17:03 发表
你还没有了解find的工作过程。

find从指定目录往下遍历每一个文件,就是根据每一个文件对表达式求值。

为什么两个都输出了?
因为它们是两个不同的文件(好像是废话),分别对表达式求两次值。



还是不很明白,,,


EXPR1= -path "./dirtest"
expr2= -path "./dirtest1"


这不是先运行EXPR1的吗/?

论坛徽章:
0
9 [报告]
发表于 2008-12-23 19:19 |只看该作者
find . -path "./dirtest" -o -path "./dirtest1"
假设下面有两个目录dirtest1和dirtest,找到dirtest的时候判断是否-path "./dirtest",符合,就打印,然后退出,然后找到dirtest1 判断是否符合-path "./dirtest",不符合,所以进行下一步,判断是否符合-path "./dirtest1",符合,打印,然后退出。
所有会打印两个目录。
19:18:35@test> find
.
./1
./1/a
./1/b
./2
./2/a
./2/b
./2/c
19:18:37@test> find -name a -o -name b
./1/a
./1/b
./2/a
./2/b
19:18:43@test> find -path "./1" -o -path "./2"
./1
./2
19:18:51@test>
有什么不理解的?
另外,find -name a -o -name b和find -name b -o -name a结果是一样的,不存在先后问题。

[ 本帖最后由 walkerxk 于 2008-12-23 19:20 编辑 ]

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
10 [报告]
发表于 2008-12-23 19:25 |只看该作者

回复 #9 walkerxk 的帖子

说的很明白。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP