find命令介绍及例题分析

find命令
 
1.1 find概述
 
1.1.1 介绍
 
可以对文件进行实时查找,精确查找;find是通过遍历指定目录中的所有文件完成查找所以执行的速度慢
 
1.1.2查找标准
 
支持众多查找标准(如支持文件名查找,根据文件权限查找,根据文件类型查找,还可以基于正则表达式对文件名做匹配。
 
1.1.3 命令格式
 
find 查找路径+查找标准+查找到以后的处理动作
 
(1)查找路径:省略的时候默认当前目录
 
(2)查找标准:默认为指定路径下的所有文件
 
(3)处理运作:默认为显示到屏幕上
 
1.2 命令格式详解
 
直接输入find命令时:可以显示当前目录下的所有文件以及隐藏文件,并且目录的下的子目录文件也显示出来
 
1.2.1 匹配标准
 
(1)-name ‘FILENAME’ :对文件名作精确匹配根据文件名查找
 
    例如: find /etc/ -name ‘passwd’  查找/etc/是否有passwd文件
 
(2)-iname  'FILENAME' :文件名匹配时 不区分大小写
 
(3) -regex  PATTERN:基于正则表达式进行文件名匹配
 
(4) -user  USERNAME:根据属主查找
 
    例如:find /tmp –user root 查找/tmp 下属主是root的所有文件
 
(5) -group  GROUPNAME :根据属组查找
 
    例如:find  /tmp –group root查找/tmp下属组是root的所有文件
 
(6)支持文件名同配(globbing)
 
    *:任意长度的任意字符
 
    ?:匹配任意单个字符(就是代表一个字符)(几个?代表几个字符)
 
  [ ] :指定范围内的任意单个 (文件名同配前面已做详细介绍这里不再过多强调)
 
  例如:find /etc –name ‘passwd*’ 查找以passwd字符开头的所有文件
 
        find /etc  -name ‘*passwd’ 查找以passwd字符结尾的所有文件
 
        find /etc  -name ‘*passwd*’ 查找文件名包含passwd字符的所有文件
 
(7)-uid UID:根据UID查找(一个用户被删除后,此前属于这个用户的文件的属主就会变成这个用户此前的ID号)
 
(8) -gid GID:根据GID查找(一个组被删除后,此前文件的基本组是这个组的文件属组就会变成这个组此前的组ID号)
 
(9)-nouser :查找没有属主的文件 定期的执行这个命令把那些没有属住的文件都交给管理员,因为没有属主的文件其他用户可能有权限访问或通过一些漏洞获得权限,隐患很大;这个是我们在工作时必须要注意的
 
    例如:find /tmp –nouser 查找tmp下没有属主的文件
 
(10)-nogroup:查找没有属组的文件
 
    例如: find /tmp  -nogroup 查找/tmp下没有属组的所有文件
 
(11)-type:根据文件类型查找   
 
    f:普通文件;d:目录;c;字符设备文件;b:块设备文件;l:链接文件;p:管道文件;s:套接字文件
 
    例如:find /tmp –type d :查找tmp下的所有目录文件
 
(12)-size:按照大小查找(后不跟单位时,默认单位是字节)
 
    #k;#M;#G; [+|-]#k:大于#k 小于#k(#代表数字)
 
    例如:find /etc –size 10k (大于9k小于等于10k文件都会被查找出来)
 
          find /etc –size -10k(所有小于10k的文件)
 
          find /etc –size +10k(所有大于10k文件
 
(13)组合条件查找
 
    -a :与条件(如果给出了两个条件没有给连接方式时时默认的就是与逻辑)
 
    例如:find /tmp –nouser –a type d 查找/tmp下没有属主并且不是目录的文件
 
    -o :或条件
 
    -not:非条件   
 
    not权限最高 带括号的时候,括号要用反义;与的优先级高于或
 
(14)按照文件时间戳查找
 
    按天数:
 
    -mtime:根据修改时间查找
 
    -ctime:根据改变时间查找
 
    -atime:根据访问时间查找
 
    例如: find ./ -amin -5查找当前目录下五分钟之内访问过的文件
 
          find ./ -atime +7 查找当前目录下至少七天没有访问过的文件
 
    [+|-]#a,m,c +#:大于#  -#:小于 #天m
 
    按分钟:
 
    -mmin:根据修改时间查找
 
    -cmin:根据改变时间查找
 
    -amin:根据访问时间查找
 
(15)按照文件权限查找
 
    -perm MODE 按权限查找 /mode:任意一位匹配都满足条件(/644 600可以 )
 
    -perm 后面直接跟权限是做精确匹配的 如:find ./ -prem 644 精确查找权限是644 的文件                    例如:find ./ -perm /644意思是只有有一个符合就行
 
    -mode:文件权限能完全包含此mode时才能显示 每一位必须匹配才行
 
    例如:find ./ -perm -644(查找644的权限文件,755 764 都能匹配到)
 
1.2.2执行的动作
 
 (1)-print:默认是显示出来
 
 (2)-ls:类似ls -l的形式显示每一个文件的详细
 
    -ok COMMAND \;(以反斜线分号结束,否则是语法错误)
 
    -ok COMMAND {}\;  :COMMAND:命令行 每一个操作需要用户确认
 
    -exec COMMAND {} \; :不需要确认
 
    {}就是引用前面匹配到的文件的文件名 然后以\;结尾
 
    例如:find ./ -perm -006 –exec chmod o-w {} \;意思是把权限是006的文件其他用户的写权限去掉
 
          find ./ -name “.*sh” –a –perm -111 –exec chmod o-x {} \;  查找以.sh结尾并且所有用户都具有执行权限的文件,然后把这个文件其他用户的执行权限去掉
 
          find /etc –size +1M  -exec echo {} >> /tmp/etc.largefiles \;查找etc下所有大于1M的文件 
 
          find /etc –size +1M | xargs echo {} >> /tmp/etc.largefiles 意思同上(不需要反斜线与分号结尾但是需要占位符)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/4af287462bace18496f90781ba20649d.html