首页 > 代码库 > linux学习之路之文本的查找---find命令的使用

linux学习之路之文本的查找---find命令的使用

文本的查找可以使用两种方式来实现,即使用locate命令来查找和find命令来查找

那么这两种方式有什么区别呢?

locate:是一种非实时查找,所谓非实时查找就是查找的不够实际,不够精确。因为locate查找是在

        系统文件数据库中进行的,而数据库默认是一天更新一次,也就是说你查找的文件再数据库

        更新之前查找的话,有可能找不到文件,因为那时数据库还没有去读取硬盘上的文件,所以

        有些文件没有写入到数据库中。

        可以收到更新数据库,使用命令updatedb

        因为不上在硬盘上读取,因此速度快

        locate是一种模糊匹配方式

由于locate使用的并不是很多,因此只是简略的介绍了一下。


另一种文件的查找方式,使用find命令来查找(递归查找方式)

find命令:是一种实时查找,他可以精确的匹配某个文件,支持众多匹配标准,它是通过遍历整个目录

          下的文件来进行查找的,因此速度慢

语法格式:find 查找的路径 匹配标准  查找到以后的处理动作

查找路径:默认是当前目录

匹配标准:默认是当前目录下的所有文件

处理动作:默认是将结果显示在屏幕上来


匹配标准:

    -name FILE:对文件名做精确匹配(这里也可以使用文件名通配符来匹配文件

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

    -regex PATTTERN:根据正则表达式来进行文件名匹配

    -user USERNAME:根据属主来查找文件

    -group GROUPNAME:根据属组来查找文件

    -uid UID:根据uid来查找文件

    -gid GID:根据gid来查找文件

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

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

    

    -type  根据文件类型来查找

        -f 普通文件

        -d 目录文件

        -l 链接文件

        -c  字符设备文件

        -b  块设备文件

        -p  管道文件

        -s  套接字文件

    

    -size  根据文件大小来查找

        [+|-] [#k | #M | #G]:+表示大于,-表示小于

         说明:如果不加+或-,则表示在该[#k | #M | #G]内的都匹配


在匹配条件时,也可以组合匹配条件

-a:与关系

-o:或关系

-not:非关系

    

    根据时间戳来匹配

    -atime [+|-]#:根据文件的访问时间来匹配文件(单位是天)

    -mtime [+|-]#:根据文件的修该时间来匹配文件

    -ctime [+|-]#:根据文件的改变时间来匹配文件

        +:表示至少#天没有[访问|修改|改变]过

        -:表示#天内[访问|修改|改变]过

        不加+或-:表示正好在第#天[访问|修改|改变]过


    -amin:意义同上,只不过单位为分钟

    -mmin:

    -cmin:


    -perm 根据权限来匹配文件

        MODE:和这个权限一致的文件才匹配(精确匹配)

        -MODE:文件权限包含此权限才符合条件

        /MODE:只需要匹配文件中(九位权限中的)一位权限就匹配成功

 

处理动作

    -print :显示到屏幕上

    -ls :类似ls -l的形式显示该文件的详细信息 

    -ok COMMAND {} \; 对查找到的文件使用命令处理(使用该命令需要确认)

    -exec COMMAND {} \; 同上,{}是引用前面已经找到的文件

    


本文出自 “linux学习之路” 博客,谢绝转载!