Linux命令之find

    find是一个在目录下查找文件目录的工具,而且不同于locate它是精确查找,所以对于内容很多很大的目录它的速度会比较慢,但是它很强大,强大到我必须在这里总结一下。

    find命令格式:

        find [选项] 目录 [匹配模式] [处理动作];其中目录是必须存在的,因为他是在目录中查询文件目录的呀。

        匹配条件:

        按文件名来查找:

         -name 匹配模式:在指定的目录下查找符合匹配模式的文件目录。

        按文件的属主;属组;UID;GID查找:

         -user USERNAME:在指定的目录下查找属主为USERNAME的文件目录。

         -group GROUPNAME:在指定的目录下查找属组为GROUPNAME的文件目录。

         -UID UIDNUM:在指定的目录下查找属主UID为UIDNUM的文件目录。

         -GID GIDNUM:在指定的目录下查找属组GID为GIDNUM的文件目录。

         -nouser:在指定的目录下查找没有属主的文件目录。

         -nogroup:指定的目录下查找没有属组的文件目录。

        按文件的类型来查找:

         -type -f:在指定的目录下查找普通文件。

         -type -d:在指定的目录下查找目录。

         -type -l:在指定的目录下查找链接文件。

         -type -b:在指定的目录下查找块文件。

         -type -c:在指定的目录下查找字符型文件。

         -type -s:在指定的目录下查找套接字文件。

         -type -p:在指定的目录下查找管道文件。

        按文件的时间戳来查找:

         时间:

          按天:

            atime:文件最后一次被修改元数据(inod)的时间。

            ctime:文件最后一次被访问的时间。

            mtime:文件最后一次被修改数据(block)。

          按分:

            amin:文件最后一次被修改元数据(inod)的时间。

            cmin:文件最后一次被访问的时间。

            mmin:文件最后一次被修改数据(block)。

         他们后面接的时间表示方式有:

            [-atime -ctime -mtime] #:从执行find命令开始之前的#天到#+1天的文件目录。

            [-atime -ctime -mtime] +#:从执行find命令开始之前的#+1天之前。

            [-atime -ctime -mtime] -#:从#+天到执行find命令之间的文件目录。

        按文件的权限分:

         权限的表示方式:

            -perm mode(###):只匹配文件的权限为###的文件目录(精确权限查找)。

                例如:755:只匹配文件的权限为rwxr-xr-x的文件目录。

            -perm /mode(/###):匹配文件的属主拥有#权限或者属组拥有#权限或者其他人拥有#

                              权限的文件目录。(三个#只是代表数字并不一定相同)

                              记住一点:9个权限之间的是或的关系。

                例如:/111:匹配属主拥有x或者属组拥有x或者x的文件目录。但是需要注意的是

                文件只要拥有这个权限就行,至于其他的权限是什么都匹配、例如;700也匹配。

            -perm -mode(-###):匹配文件的属主拥有#权限并且属组拥有#权限并且其他用户拥有#

                              权限的文件目录。

                例如:-444:匹配属主拥有r且属组拥有r去其他用户拥有r权限的文件目录。一样

                需要注意的是只要拥有这个权限就满足条件,并不是精确的完整的权限。

                同样记住一点:9个权限之间是与的关系。但是还是只要拥有就行。

         按文件大小分:

            -size #:表示#到#-1大小的文件。

            -size +#:表示大于#大小的文件。

            -size -#:表示小于#-1大小的文件。

 

        处理动作:

         -ls(exex ls -l {} \;):把find找到的文件目录用传给ls -l长格式输出出来。

         -print:把find找到的文件目录打印出来,默认就会。

         -fls 文件路径:把find找到文件目录记录到这个指定的文件中。

         -delede:把find找到的文件目录删除。

         -exec 命令 {} \;使用这个时候记住find把找到的文件目录都放在{}中,因此就可以用命令

                来操作find找到的文件目录,注意{}后面必须一个空格而且-exec的终结标志是

                “;”,但是很多“;”都有特殊意义,因此在它前面加上“\”来转义。

         find 。。。| xargs 命令:将find找到的文件目录通过管道给xargs,然后xargs将其交给它

                后面的命令来操作(与-exec不一样的是xrags是分批处理这些文件目录,而exec

                是一次处理完,这样当文件目录太多太大的时候就会托底系统性能)。

        逻辑:

         -a:与

         -o:或

         -not:非

 

        -not (-user USERNAME1 -a USERNAME2):文件目录属于USERNAME1或者USERNAME2。

        -not (-user USERNAME1 -o USERNAME2):文件目录不属于USERNAME1也不属于USERNAME2。

        至于匹配模式就是使用通配符和正则表达式来匹配就行。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

         -

 

 

 

                

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

        

        

        

            

          

 

你可能感兴趣的:(linux)