写在前面
对于玩linux的人来说,目录搜索和文件定位是必不可少需要掌握的技能,那么自然而然对find命令就不会陌生,在日常的工作中决不会少了它的身影。但是呢,我发现绝大多数的人(包括我在内)由于对它缺乏更深的了解,因此并不能高效地使用它,充其量会个find path -name pattern(即通过文件名搜索文件)。其实呢,find命令提供了很多功能,如果能够花点时间去学习掌握,势必会大大增加工作的效率。
有一点需要注意,那就是find命令相对其它命令来说是稍微有那么一点奇怪的。怎么说呢? 如果你去查看find的man手册,肯定会看到它里面有个表达式(expression)的概念(学过程序设计的童鞋不要把程序设计里的表达式概念与这里的表达式混为一谈,索性认为它们彼此是不同的概念就好)。我认为学习掌握这个表达式是判断一个人对find命令熟练与否的标志。
find命令格式
先来整体把握一下find命令的格式。一图胜千言,如下:
find命令如何工作
简述find命令工作流程是这样的:沿着PATH指定的文件层次结构向下遍历,匹配符合expression中tests指定的条件的文件,并对其执行expression中指定的actions。 其中PATH我们可以一次性连续给出多个路径,find命令在遍历搜索完一个路径之后,会继续搜索遍历下一个路径。也可以省略PATH,那这时PATH默认是“.”,即当前目录。
EXPRESSION
文章一开始就说了,学习find命令时掌握expression是重中之重。它指引find命令如何匹配符合条件的文件,并对匹配到的文件执行哪些相应的操作。
从上面的find命令格式中我们可以看到一个完整的expression可以由options,tests,actions以及operators组成。
options
d
tests
d
actions
d
operators
d