码迷,mamicode.com
首页 > 其他好文 > 详细

文件查找-locate find 学习笔记

时间:2016-07-12 15:50:44      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:文件搜索 find locate

locate : (速度快)

    非实时,模糊匹配 .   查找是根据全系统数据库进行的

    #updatedb   手动生成文件数据库 

find : (速度慢)

    实时查找 ,

    精确查找 ,

    支持众多查找标准 

    遍历指定目录中的所有文件完成查找 ,

find 查找路径 查找标准 查找到以后的处理运作   

查找路径 : 默认当前目录

查找标准 : 默认为指定路径下的所有文件

处理运作 : 默认为显示


匹配标准 :

   -name ‘FILENAME‘ : 对文件名做精确匹配

        文件名通配:

                技术分享

    

   -iname ‘FILENAME‘ : 文件名匹配时不区分大小写

     -regex PATTERN : 基于正则表达式进行文件名匹配

     -user USERNAME : 根据属主查找

     -group GROUPNAME : 根据属组查找

     -uid UID : 根据 UID 查找

     -gid GID : 根据 GID 查找

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

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

     -type :    根据文件类型查找

              f : 普通文件

              d : 目录

              c : 字符设备

              b : 块设备

              l : 连接文件

              p : 管道设备

              s : 套接字设备

      -size : 根据文件大小查找

             [+|-]#k

                    #M

                    #G

               -10k  所有小于 10k 的文件

               +10k  所有大于 10k 的文件

组合条件 :

       -a : 与

       -o : 或

     -not : 非


[root@nono ~]# find /etc -name ‘passwd‘        #在 /etc 目录下查找文件名为 passwd 的文件
[root@nono ~]# find /etc -name ‘passwd*‘      #在 /etc 目录下查找文件名 passwd 开头的文件
[root@nono ~]# find /tmp -user zhao             #在 /tmp 目录下查找文件属主为 zhao 的文件
[root@nono ~]# find /etc -group mysql          #在 /etc 目录下查找文件属组为 mysql 的文件
[root@nono ~]# find /etc -type d                   #在 /etc 目录下查找目录
[root@nono ~]# find /etc -size 1M                 #在 /etc 目录查找大小为 1M 的文件( 1M 内的所有文件)
[root@nono ~]# find /etc -size 10k -ls             #在 /etc 目录下查找 10k 以内的所有文件,并且长格式显示
[root@nono ~]# find /etc -nouser -a -type d   #在 /etc 目录下查找没有属主并且类型为目录的
[root@nono ~]# find /etc -not -type d            #在 /etc 目录下查找非目录的文件
[root@nono ~]# find /tmp -not -type d -a -not -type s    #/tmp 目录,不是目录,并且还不能是套接字类型的文件


根据时间戳查找文件

-mtime : 修改时间   (天)

-ctime : 改变时间

-atime : 访问时间

      [ +|- ]#

-mmin 

-cmin

-amin

      [ +|- ]#


[root@nono etc]# find ./ -amin -5   #查找当前目录下 , 5分钟之内访问过的文件
[root@nono etc]# find ./ -amin +5  #查找当前目录下, 5分钟之前访问过的文件(至少有5分钟没访问过)



-perm chmod  根据文件权限匹配

          -perm ### : 精确匹配

          -perm /### : 任意一位匹配成功即可

          -perm -### : 文件权限能完全包含此 MODE 时才能显示 (三位完全包含)

技术分享技术分享

动作 :

        -print : 显示

        -ls : 类似 ls -l 的形式显示每一个文件的详细

        -ok COMMAND {} \ :   需要用户确认

        -exec COMMAND 

[root@nono etc]# find ./ -perm -006 -exec chmod o-w {} \;  
#在当前目录下找到 其他人权限包含 rw 的文件,并将找到的文件,取消 w 权限. {} 为占位符
[root@nono etc]# find ./ -perm -020 -exec mv {} {}.new \;    
#在当前目录下找到 属组包含w权限的文件,并重命名为 .new
[root@nono etc]# fidn ./ -name "*.sh" -a -perm -111 -exec chmod o-x {} \;   
#在当前目录下找到 .sh 结尾的文件,并且有属主属组其他人都有执行权限的文件,减去执行权限



练习 : 

1 . 查找 /var 目录下属主为 root 并且属组为 mail 的所有文件;

find /var -user root -group mail

2 . 查找 /usr 目录下不属于 root bin student 的文件;

find /usr -not -user root -a -not -user bin -a -not -user student

find /usr -not \( -user root -o -user bin -o -user student \)

3 . 查找 /etc 目录下最近一周内内容修改过且不属于 root 及 student 用户的文件;

find /etc -mtime -7 -not -user root -a -not -user student

4 . 查找当前系统上没有属主或属组且最近一天内曾被访问过的文件,并将其属主属组均修改为 root;

find / \(-nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;

5 . 查找 /etc 目录下大雨 1M 的文件,并将其文件名写入 /tmp/etc.largefile 文件中;

find /etc -size +1M >> /tmp/etc.largefile

6 . 查找 /etc 目录下所有用户都没有写权限的文件,显示出其详细信息

find /etc -not -perm /222 -ls 






文件查找-locate find 学习笔记

标签:文件搜索 find locate

原文地址:http://aby028.blog.51cto.com/5371905/1825596

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!