Linux初级运维(十)——Linux文件查找详解

一、文件查找

    常用命令:locate,find

    1、locate  

      locate:在全系统查找文件的命令。非实时,模糊匹配,查找事根据全系统文件数据库进行的。

        #updatedb:手动生成文件数据库

        优点:速度快

    2、find

        find:遍历指定目录中的所有文件完成查找,速度慢。

        find特点:实时查找;精确查找、支持众多查找标准

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

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

扫描二维码关注公众号,回复: 4055086 查看本文章

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

            处理运作:默认为显示

    3、匹配标准:

            -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)   +表示大于#k  -表示 小于#K

    组合条件

            -a:表示两个条件都符合,才显示   与条件  ;  -o : 表示两个条件符合一个就显示  ,或条件 ; -not :表示非条件

            给出两个条件,没有说明逻辑关系。默认是与条件

             

            -mtime :修改时间

            -ctime:改变时间

            -atime:访问时间   

                 都可后缀多少天,   [+|-] #    +号:表示至少#天  -号:表示#号天内   #:表示刚好#天。

            -mmin:修改时间        -cmin:改变时间      -amin;  访问时间    

                  都可后缀多少分钟,  [+|-] #    +号:表示至少#分钟  -号:表示#分钟内   #:表示刚好#分钟。 

        

            -perm  MODE  :根据权限进行查找

                /MODE :只要有一项匹配就可以查找

                -MODE:文件权限能够完全包含的情况下可以查找

    运作:

           -print :显示

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

            -ok :COMMAND\;每一次操作都需要用户确认

            -exec COMMAND {}\;

练习题:

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

        find /var -user root -guoup mail

    2、查找/usr 目录下不属于root bin 或student的文件:

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

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

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

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

        find /etc -mtime -7 -not \( -user root -o -user student\)

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

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

    5、查找 /etc 目录下大于1M的文件,并将其文件名写入 /tmp/etc.largefiles文件中:

        find /etc -size +1M -exec ehco {}>> /tmp/etc.largefiles

        find /etc -size +1M | xargs echo {} >> /tmp/etc.largefiles

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

        find /etc -not -perm /222 -ls


二、特殊权限

     passwd:s

        SUID:运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者。

            chmod u+s  FILE

            chmod u-s FILE

                    如果FILE本身原来就有执行权限,则SUID显示为s;否则显示S;

        SGID:运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组。

            chmod g+s FILE

            chmod g-s FILE

        Sticky:在一个公共目录,每个可以创建文件,删除自己的文件,但不能删除别人的文件;

                chmod o+t DIR

                chmod o-t DIR

    

        

        

猜你喜欢

转载自blog.51cto.com/5001660/2316316