find命令详解

find命令详解

实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找;

一、工作特性:

  • 查找速度略慢;
  • 精确查找,只查找文件路径的基名而非整个路径;
  • 实时查找;
  • 可能只搜索用户具备读取和执行权限的目录

二、 用法:

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

  • 查找起始路径:指定具体搜索目标起始路径;默认为当前目录;
  • 查找条件:指定的查找标准,可以根据文件名、大小、类型、从属关系、权限等等标准进行;默认为找出指定路径下的所有文件;
  • 处理动作:对符合查找条件的文件做出的操作,例如删除等操作;默认为输出至标准输出;

1. 查找起始路径

查找时,可以指定搜索层级:

  • -maxdepth level 最大搜索目录深度,指定目录为第一等级,其子目录为2等级;
  • -mindepth level 最小层级目录深度搜索,指最少搜索多少层
    例子:只显示目录的二层,
    ~]$find -maxdepth 2 -mindepth 2 -name file

2、查找条件

即表达式,由选项和测试组成;测试结果通常为布尔型(”true”, “false”)

①根据文件名和inode查找:

  • -name “pattern”:区分字符大小写
  • -iname “pattern”:不区分字符大小写
    注意:此处pattern支持glob风格的通配符;例如 *, ?, [], [^]
  • -samefile name 相同inode好的文件
  • -links n 链接数为n文件
  • -regex pattern:基于正则表达式模式查找文件,匹配是整个路径,而非基名;一般不用;

② 根据文件从属关系查找:

  • -user USERNAME:查找属主指定用户的所有文件;
  • -group GRPNAME:查找属组指定组的所有文件;
  • -uid UID:查找属主指定的UID的所有文件;
  • -gid GID:查找属组指定的GID的所有文件;
  • -nouser:查找没有属主的文件(不用跟用户名);
  • -nogroup:查找没有属组的文件(不用跟组名);

③ 根据文件的类型查找:

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

④ 组合测试:

  • 与:-a, 默认组合逻辑,可省;
  • 或:-o
  • 非:-not, !
  • 德.摩根定律

    • (非P)或(非Q)=非(P且Q)
      +(非P)且(非Q)=非(P或Q)
      注意:使用摩根定律时括号加上转义符\
      例子:
      !A -a !B = !(A -o B)
      !A -o !B = ! (A -a B)

⑤ 根据文件的大小查找:

  • -size [+|-]#UNIT
    常用单位:k, M, G

    • #UNIT:(#-1, #]
      如:6k 表示(5k,6k]
    • -#UNIT:[0,#-1]
      如:-6k 表示[0,5k]
    • +#UNIT:(#, oo)
      如:+6k 表示(6k,无穷)

⑥ 根据时间戳查找:

以“天”为单位:

  • -atime [+|-]#

    • #:[#, #-1)
    • -#:(#, 0]
    • +#:(oo, #-1]
  • -mtime
  • -ctime

以“分钟”为单位:

  • -amin
  • -mmin
  • -cmin

⑦ 根据权限查找:

  • -perm [/|-]mode

    • -mode:精确权限匹配;每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;9位权限之间存在“与”关系;非0权限位的“与”;只有当前面有/或者-时候,0表示不关注
    • /mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;9位权限之间存在“或”关系;非0权限位的“或”;
      find -perm 755 会匹配权限模式恰好是755的文件
      只要当任意人有写权限时,find-perm+222就会匹配
      只有当每个人都有写权限时,find-perm-222才会匹配
      只有当其它人(other)有写权限时,find-perm-002才会匹配
      #### ⑧ 查找比某个文件新或比某个文件旧
  • -newer:选项
    格式为:-newer newest_file_name ! -newer oldest_file_name

3、处理动作:

  • -print:输出至标准输出;默认的动作;
  • -ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息;
  • -delete:删除查找到的文件;
  • -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;
  • -ok COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;此处{}表示引用找到的文件的文件名;
  • -exec COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;此处{}表示引用找到的文件的文件名;

注意:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令;但是有些命令不能接受过长的参数,此时命令执行会失败;如下方式可规避此问题:find | xargs COMMAND

原创文章,作者:oranix,如若转载,请注明出处:http://www.178linux.com/71346

赞 (0)
oranixoranix
上一篇 2017-03-19 16:15
下一篇 2017-03-19 16:52

相关推荐

  • Linux中的账号管理之命令的使用(中)

    linux中账号管理的命令非常多,我这里主要介绍最常见的几个命令,这些命令分别是针对用户和组的管理 主要介绍对用户管理的命令: 一、用户创建:useradd useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实…

    Linux干货 2016-08-07
  • 从Linux小白到大牛——与狼共舞的日子11

    马哥教育网络班21期+第10周课程练习 1、详细描述一次加密通讯的过程,结合图示最佳。 加密过程 1.使用单向加密算法,提取A的文件的特征码。 2.使用A的私钥对提取出来的特征码进行加密,把加密后的特征码附加在A的文件的后面。 3.使用对称加密对刚刚的A的文件和加密后的特征码进行加密,生成对称加密密钥 4.使用B的公钥对第3步骤的对称加密的密钥进行加密,加密…

    Linux干货 2016-12-05
  • 关于 shell脚本编程第一篇

                                                   shell脚本编程(1) …

    系统运维 2016-08-15
  • N26 第二周

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。  [1]mkdir : make directories            mkdir [OPTION]… DIRECTORY… &n…

    Linux干货 2017-02-05
  • 排错

    把/etc/inittab  模式改为6模式 怎么修复 1 先把 vim /etc/inittab 打开 2 把/etc/inittab 模式改为6 3 reboot 4 在倒计时完之前按任意键 5按A进入 6 在quiet  命令后面写入 3  模式 重启 7把 vim /etc/inittab 打开 8 把/etc…

    Linux干货 2017-05-15
  • linux 小命令

    设置自动登录、设置网络自动连接、字体颜色

    2017-11-19

评论列表(1条)

  • All well
    All well 2017-03-19 16:54

    写的不错哦,盼盼,很地道,全面,点个赞