文件查找命令find (笔记)

之前所学的grep egrep fgrep 都是用来查找文本中的某个字符匹配的

现在来学一下查找文件命令 locate find


locate 

此命令是非实时查找文件,它是根据全系统文件数据库进行查找的,

仅用模糊匹配,非精确查找

locate filename 即可实现查找其它相关文件

但是注意有时候如果系统是刚安装的有可能还没建立此数据库,使用该命令会提示查找不到数据库

不过不用担心使用updatedb即可自动生成数据库,生成数据库的时候有时候会很慢,这个根据用户的

磁盘上所放的东西多少决定的

db库存放在/var/lib/mlocate/mlocate.db

这个特点就是速度快


find命令

特点:实时查找

      精确匹配,遍历指定目录中的所有文件完成查找,所以速度慢

      支持众多查找标准

用法格式:

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

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

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

action  :默认为打印到屏幕输出


查找标准

  匹配标准:

    -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 中括号可省略+-表示大于小于#号是数字 按文件大小查找文件

   组合条件

    -a  and 与    

    -o  or  或   

    -not  非

    用法例:  find ./ -not -user user2 -a -not -user user1

    解释:查找非属主为user2且非属主为user1的文件

    此条命令还可以这样写

            find ./ -not \( -user user -o -user user1\) 摩根定律你懂得!

    -mtime 修改时间

    -ctime 改变时间

    -atime 访问时间

        [+|-] # 

        -5 表示5天之内

        +5 表示5天之前

    -mmin 修改分钟

    -cmin 改变分钟

    -amin 访问分钟

    和上边的区别是上方的单位是天,下方的单位是分钟

    -perm 644 权限匹配,这个表示查找精确匹配644权限的文件

    -perm /644 权限匹配,表示匹配其它任意一位权限都OK

        一位权限的意思:644 为rw-r--r-- 表示匹配其中任何一个权限就打印到屏幕上

    -perm -644 表示匹配包含该权限的比如755 777 744 只要大于这个这个644的权限就OK,

               切记不可小于这个权限比如633这个就不行

        便于理解/表示或的意思 即其中只要有一位匹配就显示

                -表示完全匹配 即只可大于不可小于呵呵 



查找到以后处理Action 动作

    -print 打印到屏幕

    -ls    类似ls -l的形式显示匹配到的文件

    -ok command {} \; 即可在匹配到的文件后加要执行的命令,这个是固定格式

                    (注:此命令被执行时需要确认每一条)

    -exec command {} \; 同上一条一样,不同的是这个命令执行时不会提示是否需要执行

                        所以要在执行前确认确认再确认!!

    xargs command  这个也是后边可以接其它命令的

    用法 find /etc -size +1M | xargs echo >> /tmp/large.file


最后加一个问题 我没想出来希望大神帮助一下看看怎样组合命令!!

 

1.查找一下/etc目录下所有用户都没有执行权限的文件

已找到答案  find /etc -not -perm /222 

Thanks for your watching!

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1643763如需转载请自行联系原作者


Winthcloud

上一篇:H3C交换机基于端口VLAN的配置示例


下一篇:SQLServer2008总结