- 论坛徽章:
- 5
|
自己跟自己解答一下:
相关链接:
http://blog.csdn.net/sosodream/article/details/6410846
下面的最后一段对这个命令做了很好的解释:
第五条命令,是man find里的一个例子:
find . -wholename ’./src/emacs’ -prune -o -print
先提二点
-wholename 或者有 -path替代,gnu的find较新的版本中,这二个已经没啥差别了
这条命令,用到了 -prune, 注意这里 -prune 是个 action,而不是test
然后对这条find命令拆分
path为.,即当前目录
expression为复合句,用-o拆分成二个子句,只有前一子句false时,才执行第二子句
第一个:-wholename ’./src/emacs’ -prune
这里test条件为:-wholename ’./src/emacs’,
action为: -prune ,执行“挑过子目录解析”,
若test 结果为false,即没匹配到./src/emacs, 是不执行action的,子句结果为false
若test 结果为true,即匹配到 ./src/emacs ,则执行action:跳过
综合起来就是:当目录项(文件或目录)匹配./src/emacs 时,执行prune,即“不进入该目录”,或者说跳过该目录解析,expression为true
当目录项(文件或目录)不匹配./src/emacs 时,expression为true
第二个:-print
这个子句省略了test,默认即为true,-print是acion,即输了
在前一个语句的false的情况下才执行第二个语句,
所以整个复合的expression即,跳过目录:./src/emacs 且不进入该目录,输出其他目录项
|
|