Linux find命令

文件查找

    locate:非实时查找,基于数据库(索引)查找,模糊查找,但速度快;

        需要事先构建索引(数据库),一般是定期(周期性任务)的在系统空闲时自动构建索引;索引构建过程需要遍历整个根文件系统,极其耗费资源;

    find:实时查找,精确查找,速度慢;

        通过遍历指定路径下的所有文件来进行查找;

        find [options] … [文件路径] [查找条件] [处理动作]

            文件路径:指定具体目标路径,默认为当前目录;

            查找条件:指定的查找标准,可以是文件名、文件大小、文件权限等,默认为指定路径下的所有文件;

            处理动作:对符合条件的文件做什么动作,默认为输出到屏幕上;

                查找条件:

                    根据文件名查找

                        -name "filename" :支持使用glob;

                        -iname:查找时不区分大小写;

                        -regex "pattern":支持按正则表达式匹配,根据模式匹配整个文件路径字符串,而不仅仅是文件名;

                    根据属主,属组查找

                        -user:根据用户名查找;

                        -group:根据组名查找;

                        -uid:根据uid查找;

                        -gid:根据gid查找;

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

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

                    根据文件类型查找

                        -type:指定类型查找;

          f:文件类型

          d:目录类型

          l:链接

          p:管道

          c:字符设备类型

          b:块设备类型

      组合条件查找:可能会用到摩根定律;
                       -a:并且;                    

                        -o:或者;

                        -not:非;

                        如果使用括号的话,需要转义字符转义;

                    根据文件大小查找

                        -size [+|-]:(n-1,n]  按照大小查找;常用单位有K、M、G;

                            +:(n,∞)

                            -:[0,n-1]

                    根据时间戳查找

                        以天为单位查找:

                            -atime [+|-]:[n,n+1]访问时间

                                +:(n+1,∞)

                               -:[0,n)

                            -ctime:改变时间;

                            -mtime:修改时间;

                        以分钟为单位:

                            -amin[+|-]:用法同上;

                            -cmin:

                            -mmin:

                    根据权限查找

                        -perm[+|/|-] MODE:

                            /:任何一类对象(user,group,other)只要有一类的任何一个权限位能匹配上就符合;

                            -:三类对象都要匹配并且权限位也要全部匹配,只可多不能少;

                    处理动作

                        -print:默认的处理动作,显示至屏幕;

                        -ok COMMAND {} ; :对查找到的文件执行由COMMAND命令指定的动作;交互式的;

                        -exec COMMAND {} ; :对查找到的文件执行由COMMAND命令指定的动作;非交互式;

                            Note:find传递查找到的文件给后面指定的命令时,会将查找到的符合条件的文件一次性的全部传递给后面的命令;有些命令不能接受过多的参数,会导致命令执行失败;可以使用find | xargs  command 处理,但是并不是所有命令(command)都支持xargs;xargs一次只接受一条信息处理;

                            find /path/to/somewhrer -user root -exec mv {} {}.new ;  可实现改名操作;

                            {}:表示每一个被find查找到的符合条件的文件;

                        -delete:删除查找到的文件;

                        -fls  /path/to/somefile :将查找到的文件按照长格式保存至指定文件中;

                        -ls:类似于对查找到的文件做ls -l操作;

   注:根据马哥视频做的笔记,如有错误,欢迎指正;侵删

 

 

 

原文地址:https://www.cnblogs.com/guowei-Linux/p/9787340.html