欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Linux】find命令的详解

程序员文章站 2022-05-13 11:15:26
...

find命令是用来在给定的目录下查找符合给定条件的文件

find [OPTIONS] [查找起始路径] [查找条件] [处理动作]

一、OPTIONS参数

    -P、-L、-H:控制软连接的对待方式,用的不多。不介绍了

二、查找路径

    就是个目录路径,相对和绝对都可以。

三、查找条件

1.根据名称查找

-name “PATERN”

-iname “PATERN”:不区分名称字母的大小写

[aaa@qq.com a]$ ls
abb.c  a.c  A.c  acc.cpp  a.txt  b1  c1
[aaa@qq.com a]$ find ./ -name "a*"
./a.c
./abb.c
./acc.cpp
./a.txt
[aaa@qq.com a]$ find ./ -iname "a*"
./a.c
./abb.c
./acc.cpp
./A.c
./a.txt

-regex PATTERN:基于正则表达式的模式查找,匹配的是整个路径,而非单个文件名。

2.根据文件从属关系查找

-user USERNAME:查找属主指定用户的所有文件;

-group GRPNAME:查找属组指定组的所有文件;

 

-uid UID:查找属主指定的UID的所有文件;

-gid GID:查找属组指定的GID的所有文件;

 

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

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

3.根据文件的类型查找

-type:根据不同的文件类型筛选

f 普通文件
d 目录文件
l 符号链接文件
b 块设备 文件
c 字符设备文件
p 管道文件
s 套接字文件

4.根据文件的大小查找

-size [+|-]#UNIT

常用单位:k, M, G

            #UNIT:(#-1, #]

            -#UNIT:[0,#-1]

            +#UNIT:(#, oo)

【Linux】find命令的详解

1、1k时:a3只有15个字节,也被算做1k也查询,即条件符合大于0k ( #-1 ),小于等于1k (#)

2、+1k时:a和a1满足大于1k(#)的条件。

3、-62k时:只有a3满足大于等于0,小于等于 61k(#-1)的要求。

5.根据时间戳查找

按照atime(文件的最后访问时间)、mtime(文件的最后修改时间)、ctime(文件最后改变时间)三个变量来查询:

以天为单位,

          -atime [+|-]#

              #:[#, #-1) :最后访问时间在#天前(大于等于#天前,小于#-1天前)

                    等价于最后访问时间与当前的时间差 大于 (#-1)*24小时,小于等于 #*24小时

              -#:(#, 0] :最后访问时间在#天以内,不包括24小时前的那一刻。

                    等价于最后访问时间与当前的时间差小于 #*24小时

              +#:(oo, #-1] :最后访问时间在#-1天以前的。包括#-1天前

                    等价于最后访问时间与当前的时间差大于等于 #*24小时

                  -mtime

                  -ctime

【Linux】find命令的详解

6.根据权限查找

-perm

-perm [/|-]mode

  mode:精确权限匹配;

  /mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;9位权限之间存在“或”关系;

  -mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足。9位权限之间存在“与”关系;

查看案例:

【Linux】find命令的详解

1):精确查找。就是匹配权限值完全相等的;

【Linux】find命令的详解

2):/mode。 只要有一组用户匹配到一个权限即可。

 通俗说:就是属主拥有给定属主权限的某一个,或者数组拥有给定权限的某一个,或者其他用户拥有给定权限的某一个即可。

【Linux】find命令的详解

表示属主拥有执行权限

或者数组拥有写权限,

或者其他用户拥有写权限

 (3):-mode。并且的关系。

 通俗说:就是给定的属主权限必须拥有。并且给定的数组权限必须拥有。并且给定的其他用户权限必须拥有。

【Linux】find命令的详解

表示属主拥有执行权限

并且数组拥有写权限,

并且其他用户拥有写权限

处理动作:

          -print:输出至标准输出;默认的动作;

          -ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息;

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

          -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;

          -ok COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;

          -exec COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;

 

        注意:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令;

 

            但是有些命令不能接受过长的参数,此时命令执行会失败;另一种方式可规避此问题:

             find | xargs COMMAND

仿写自:https://www.cnblogs.com/scrit/p/5854197.html

相关标签: find命令