Linux篇:find命令使用详解

服务器

浏览数:61

2019-10-13

find命令是用来在给定的目录下查找符合给定条件的文件

  find [OPTIONS] [查找起始路径] [查找条件] [处理动作]

一、OPTIONS参数

      -P、-L、-H:控制软连接的对待方式,用的不多。不介绍了

二、查找路径

 就是个目录路径,相对和绝对都可以。

三、查找条件

 (一)、根据名称查找

  -name “PATERN” 或者-iname “PATERN” (不区分大小写)

(二)、根据文件从属关系查找:

  -user USERNAME:查找属主指定用户的所有文件;

  -group GRPNAME:查找属组指定组的所有文件;

  -uid UID:查找属主指定的UID的所有文件;

  -gid GID:查找属组指定的GID的所有文件;

 -nouser:查找没有属主的文件;

 -nogroup:查找没有属组的文件;

(三)、根据文件的类型查找:

 -type:根据不同的文件类型筛选(最常用的就是f和d了)


(四)、根据文件的大小查找:

 -size [+|-]   #UNIT   常用单位:k, M, G

1、1k时:a3只有15个字节,也被算做1k也查询,即条件符合大于0k ( #-1 ),小于等于1k (#)

其实我觉得这个就是查找大小等于1k的文件

2、+1k时:a和a1满足大于1k(#)的条件

3、-62k时:只有a3满足大于等于0,小于等于 61k(#-1)的要求。

(五)、 根据时间戳查找:

按照atime(文件的最后访问时间)、mtime(文件的最后修改时间)、ctime(文件最后改变时间)三个变量来查询:

以天为单位,如果是以分钟为单位,就把time换成min,道理是一样的

实例如下:

# 找/var/log目录中更改时间在7日以前的普通文件

find /var/log -type f -mtime +7

这里最后的时间+7有必要说明白一下

以 -mtime 为例进行说明:

-mtime -7 

# 最后修改时间在7天以内的文件,或者说最后修改时间与当前的时间差小于 7*24小时

-mtime +7 

# 最后修改时间在8天以前的文件,或者说是最后修改时间与当前差大于(7+1)*24小时

-mtime 7 

# 最后修改时间在7天前(大于等于7天前,小于7-1天前),或者说是最后修改时间与当前的时间差大于 (7-1)*24小时,小于等于 7*24小时

待会补充一张图:

(六)、根据权限查找

-perm

-perm [/|-]mode

mode:精确权限匹配;

/mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;9位权限之间存在“或”关系;(不想用)

-mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足。9位权限之间存在“与”关系;(不想用)

处理动作:

-print:输出至标准输出;默认的动作;

-ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息;

-delete:删除查找到的文件;

-fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;

-ok COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;

-exec COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;

注意:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令;

但是有些命令不能接受过长的参数,此时命令执行会失败;另一种方式可规避此问题:

find | xargs COMMAND

最后说明,本篇文章大部分来源于https://www.cnblogs.com/scrit/p/5854197.html,同事更正了文章中的一个小错误。

作者:walker86