首先,大家请看一下下面的这个命令流:
第一个find命令找出./dir文件夹后,默认执行-print,所以输出./dir。为什么第二个find命令在找出./dir文件夹之后,不能
问题如下:关于find的一个问题
- jiandan23
- 帖子: 94
- 注册时间: 2010-12-17 22:31
- 系统: Mint 19.2
-
- 帖子: 992
- 注册时间: 2007-12-05 10:57
- 系统: ubuntu14.04
- 来自: 金山
Re: 关于find的一个问题
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后面的语句被执行了,即他们被打印了。
-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后面的语句被执行了,即他们被打印了。