find命令具有精确查找的功能,能为用户查找指定目录下的符合查找要求的所有具有读写权限的文件,并显示到文件屏幕上;

find [option] [查找路径] [查找条件] [处理动作]

查找路径:指定查询路径,默认情况下为当前目录;

查找条件:可以根据属主,属组,没有属主,没有属组,文件名字,文件大小,文件访问时间等查询文件;

处理动作:对于符合条件的文件进行某个处理动作,默认将查找结果显示到屏幕;


查找条件:

-name文件名称:根据文件名进行查找;

支持使用通配符:?,*,[],[^];

-iname文件名称:根据文件名进行查找,不区分大小写;

支持使用通配符:?,*,[],[^];


-links n:根据链接数为n的文件进行查找;


-inum inode:根据inode编号进行查找;

-size [+|-| ]n[cwbkMG]:根据文件的大小进行查找;

+3k:表示大小为3k至无穷的文件;

-3k:表示大小为0k到2k的文件;

3k:表示大小为1k到2k的文件;


根据时间戳进行查找:

-atime[+|-]n:根据文件访问时间进行查找,以天为单位;

-ctime[+|-]n:根据文件改变时间进行查找,以天为单位;

-mtime[+|-]n:根据文件修改时间进行查找,以天为单位;

-amin[+|-]n:根据文件访问时间进行查找,以分钟为单位;

-cmin[+|-]n:根据文件改变时间进行查找,以分钟为单位;

-mmin[+|-]n:根据文件修改时间进行查找,以分钟为单位;

-atime +3:表示四天以前被访问的文件;

-atime -3:表示三天以内被访问的文件;

-atime 3:表示三天到四天以内被访问的文件;

例 显示根目录下最近三十天没有访问过的文件;

根据文件类型查找:

-type 文件类型

b:块设备

c:字符设备

d:目录文件

f:普通文件

l:符号链接文件

p:管道文件

s:套接字文件

例 显示/etc下为目录的文件


根据文件的属主和属组进行查找:

-user uname:根据属主为指定用户的用户名进行查找

-uid UID:根据属主

-group gname

-gid GID

例 搜索根目录下属主为wjq,属组为wjq的文件;


-nogroup:在文件的属组上,没有组所对应的组名;

-nouser:在文件的属主上没有用户对应的用户名;


组合条件:

-a:与

-o:或

-not,!:取反;

逻辑组合条件遵循德摩根定律:

非(A与B) == 非A或非B

非(A或B) == 非A与非B

根据权限查找:

-perm [/|-]mode

mode:精确匹配指定权限;

/mode:隐含了逻辑或的关系,任何一个权限位的权限中,只要有一位匹配,即可满足条件;

-mode:隐含了逻辑与的关系,每一个权限位的权限中都必须同时包含指定权限位,才能满足条件;

处理动作:

-ls:在进行筛选文件后,将文件以ls -l显示文件详细信息;

-print:输出到屏幕上,默认是存在的;

-exec COMMAND {} \; :对于查找到的结果执行COMMAND命令;

例 将根目录下没有属主属组的文件,将其设定为属主为root,属组为root的文件;

例 将/etc下所有以a开头的文件移动到/mnt/aaa中