find是Linux最常用的命令之一,功能强大。但我们对find了解多少呢?有些选项每天都在使用,但你知道为什么要这样用吗?下面就一起和我看看几个选项吧。
首先,选项也许会跟参数,也许不会,但都有一个计算结果:true或false。选项之间用OR或AND连接,缺省为AND。和所有其他程序语言一样,对于OR,前面的选项如果为true那么后面的表达式就不会被执行了,对于AND,如果前面的选项为false,后面的选项就不会被执行了。
-prune选项。该选项不能单独使用,需要和其他选项配合使用,且该选项结果总是true。我们经常用到的是-path ./subdir1/subdir2 -prune -o -name '*.h'。相当于-path ./subdir1/subdir2 -and -prune -or -name '*.h'这个命令找到当前目录下多有的.h文件,除了subdir1/subdir2目录下面。-path ./subdir1/subdir2的意思就是./subdir1/subdir2下的所有文件,所以对于./subdir1/subdir2下的文件, 结果为true,对于其他文件和路径,结果为false。对于不在./subdir1/subdir2下的文件,-path为false,-prune不会被执行,-path -prune结果也为false,由于和后面的-name是OR的关系,所以-name会被执行,所以这些文件会被打印出来。对于./subdir1/subdir2下的文件,-path为true,-prune会被执行,-path -prune结果为true,所以-or -name不会被执行,这些文件就不会被打印了。