~$ ls -l /mnt
总用量 0
-rwxr-xr-x 1 root root 0 2010-11-21 15:34 a
-rwxr-xr-x 1 root root 0 2010-11-21 15:34 a.txt
drwxrwxrwx 1 root root 0 2010-11-20 20:22 shared
再执行这个命令:
~$ find /mnt -path "/mnt/shared" -prune -o -print
/mnt
/mnt/a.txt
/mnt/a
再执行这个命令:
~$ find /mnt -path "/mnt/shared" -prune
/mnt/shared
~$ find /mnt -path "/mnt/shared" -prune -a -print
/mnt/shared
再执行这个命令:
~$ find /mnt -path "/mnt/shared" -prune -print
/mnt/shared
为什么会有以上的不同呢?
其实这个命令$ find /mnt -path "/mnt/shared" -prune -o -print 要拆分成几段去理解。
find /mnt -path "/mnt/shared" 这个是最基本的find查找,查找目录为shared的,如果查找到,满足就返回真。
如果加了 -prune 选项,就表示,不寻找字符串作为寻找文件或目录的范本样式。
-print选项的意思,假设find指令的回传值为True,就将文件或目录名称列出到标准输出。
所以 find /mnt -path "/mnt/shared" -prune 去进行查找,如果查找到dir1,find就返回true, -prune实际并没有起作用。
find /mnt -path "/mnt/shared" -prune -o -print,由于 -prune 和print是 或的关系,如果find 返回真,首先执行prune,就被忽略了,没有输出; 如果find返回假,然后执行prune,就为真的,然后print。
阅读(456) | 评论(0) | 转发(0) |