关于find的一个问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
jiandan23
帖子: 94
注册时间: 2010-12-17 22:31
系统: Mint 19.2

关于find的一个问题

#1

帖子 jiandan23 » 2014-11-03 9:48

首先,大家请看一下下面的这个命令流:
捕获.JPG
问题如下:
第一个find命令找出./dir文件夹后,默认执行-print,所以输出./dir。为什么第二个find命令在找出./dir文件夹之后,不能
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: 关于find的一个问题

#2

帖子 cao627 » 2014-11-03 11:22

find . -path './dir' -prune 默认等于 find . -path './dir' -prune -a -print 的缘故吧。
-a表示逻辑与,当-a前面的语句为真,就会执行-a后面的语句,因为你当前目录下有dir这个目录,所以 -path './dir' -prune 为真,于是执行print
-o表示逻辑或,如果-o前面的语句为真,就会忽略-o后面的语句(短路),只有-o前面的语句为假才会执行-o后面的语句。

-path './dir' 是一个精确匹配模式,所以 . ./dir2 ./dir2/hello 都会匹配失败, 即对于 . ./dir2 ./dir2/hello 语句-path './dir' -prune执行结果为假, 于是-o后面的语句被执行了,即他们被打印了。
回复