linux find命令

来源:互联网 发布:java蜘蛛爬虫 编辑:程序博客网 时间:2024/05/29 10:31

find命令用于在指定的文件夹下搜索满足一定条件的文件,且对此文件夹下的子文件夹递归搜索。

find命令的基本格式是:

find [-H] [-L] [-P] [path...] [expression]

其中-H -L -P三个选项代表处理符号链接的不同方式。

-P:把符号链接文件当作其自身来搜索,而不去搜索符号链接指向的文件或目录。

-L:把符号链接当作其指向的文件或目录来搜索。

-H:当符号链接出现在以上命令的path中时,把它当作它所指向的文件或目录来搜索。否则,把它当作其自身来搜索,不去搜索其指向的文件或目录。

path是需要搜索的路径的根目录。可以不指定path,这样find命令默认递归搜索当前目录。可以指定多个path,这样find会从左到右一次搜索。

expression由三部分组成:Options,Test,Actions。其中option是一些选项,这些选项作用与所有被搜索的文件而不是某个特定文件,并且option总是返回True。所以option总是被放在expression的最前面(加入option没有被放在最前面,执行命令时会发出警告)。Test用来指定对正在检查的文件进行的测试条件,find会根据测试的条件看正在检查的文件是否符合要求,若符合要求则Test返回True,否则返回False。Actions指定找到符合条件的文件时对其进行的操作,Action的返回值既有True也有False。

find命令在搜索以给定的每个文件名或目录名为根的目录树时,从左到右计算expression的值,知道expression的结果已经可以知道(”逻辑或操作“时左边的值已经验证为True;“逻辑与操作”时,左边的值已经验证为False。)。expression个options,test,actions之间默认是and(逻辑与)。

例如:

find . -name "*.[ch]" -print

以上命令寻找当前目录下后缀名是''.c"或".h"的文件,并把符合条件的文件打印到终端屏幕上。以上命令中没有-H,-P,-L中的任意一个,因此采用默认值-P。其中"."表示当前目录(也可以用"./",效果是一样的)。expression中,没有option项,-name是test项(“*.[ch]”是-name的参数,是正则表达式),-print是action项,表示将查找到的文件名输出到屏幕。

原创粉丝点击