searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

linux find使用

2022-12-11 02:24:39
18
0

文件查找类别分:locate、find

local

  • 依赖于事先构建的索引,索引构建是在系统较为空闲时自动进行(周期任务),可以手动更新数据库(updatedb),此工作机制类似于whatis(makewhatis)
  • 索引构建过程需要遍历整个根文件系统,极消耗资源
  • 工作特点
    • 查找都快
    • 模糊查找(查找内容本身不是文件名,也包括文件路径)
    • 非实时查找(原因需要构建索引库)
    • 使用方式:locate KEYWORD

find

  • 实时查找工具,通过遍历指定路径下的文件系统完成文件查找
  • 工作特点
    • 查找速度略慢
    • 精确查找(查找文件名本身,而不包括路径)
    • 实时查找
  • 语法
    • find [OPTION] [查找路径] [查找条件] [处理动作]
      • 查找路径:指定具体目标路径,默认为当前目录

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

      • 处理动作:对符合条件的文件做什么操作;默认为输出至屏幕

      • 查找条件

        • 根据文件名查找
          • -name "文件名称":支持使用glob
          • -iname "文件名称",不区分字母大小写
          • -regex "PATTERN": 以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
        • 根据属主、属组查找
          • -user USERNAME
          • -group GROUPNAME
          • -uid UserID
          • -gid GroupID
          • -nouser:查找没有属主的文件
          • -nogroup:查找没有属组的文件
        • 根据文件类型查找
          • type TYPE
            • f:普通文件
            • d :目录文件
            • l:符号链接文件
            • s:套接字文件
            • b:块设备文件
            • c:字符设备文件
            • p:管道文件
        • 组合条件
          • 与:-a
          • 或:-o
          • 非:-not,!
          • 示例:
            • !A -a !B = !(A -o B)
            • !A -o !B = !(A -a B)
        • 根据文件大小来查找
          • size [+|-]#UNIT
            • 常用单位:k,M,G
            • #UNIT:表示范围:(#-1,#]
            • -#UNIT:表示范围:[0,#-1]
            • +#UNIT:表示范围:(#,∞)
        • 根据时间戳
          • 以天为单位
            • -atime [+|-]#
              • #:表示范围:[#,#+1)
              • -#:表示范围:(0,#)
              • +#:表示范围:[#+1,∞)
            • -mtime
            • -ctime
          • 以分钟为单位
            • -amin
            • -mmin
            • -cmin
        • 根据权限查找
          • perm [+|-] MODE
            • MODE:精确匹配权限
            • -MODE:每一类对象都必须同时拥有为其指定的权限标准
            • +MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可
        • 例子:find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} ;
    • 处理动作
      • -print:默认处理动作,显示至屏幕
      • -ls:类似于对查找到的文件执行"ls -l"命令
      • -delete:删除查找到的文件
      • -fls /path/to/somefile:查找到的所有文件的长格式信息保存至指定文件中
      • -ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令;
        • 对于每个文件执行命令之前,都会交互式要求用户确认
      • -exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
        • {}:用于引用查找到的文件名称自身
      • 注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令,有些命令不能接受过多参数,此时命令执行可能会失败,另一种方法可规避此问题
        • find | xargs COMMAND

xargs 解析:
之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如:
这个命令是错误的
find /sbin -perm +700 |ls -l
这样才是正确的
find /sbin -perm +700 |xargs ls -l

xargs 可以读入 stdin 的资料,并且以空白字元或断行字元作为分辨,将 stdin 的资料分隔成为 arguments 。 因为是以空白字元作为分隔,所以,如果有一些档名或者是其他意义的名词内含有空白字元的时候, xargs 可能就会误判了,如果需要处理特殊字符,需要使用-0参数进行处理。
选项解释 :
-0 :当sdtin含有特殊字元时候,将其当成一般字符,想/'空格等

0条评论
0 / 1000
l****n
3文章数
0粉丝数
l****n
3 文章 | 0 粉丝
l****n
3文章数
0粉丝数
l****n
3 文章 | 0 粉丝
原创

linux find使用

2022-12-11 02:24:39
18
0

文件查找类别分:locate、find

local

  • 依赖于事先构建的索引,索引构建是在系统较为空闲时自动进行(周期任务),可以手动更新数据库(updatedb),此工作机制类似于whatis(makewhatis)
  • 索引构建过程需要遍历整个根文件系统,极消耗资源
  • 工作特点
    • 查找都快
    • 模糊查找(查找内容本身不是文件名,也包括文件路径)
    • 非实时查找(原因需要构建索引库)
    • 使用方式:locate KEYWORD

find

  • 实时查找工具,通过遍历指定路径下的文件系统完成文件查找
  • 工作特点
    • 查找速度略慢
    • 精确查找(查找文件名本身,而不包括路径)
    • 实时查找
  • 语法
    • find [OPTION] [查找路径] [查找条件] [处理动作]
      • 查找路径:指定具体目标路径,默认为当前目录

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

      • 处理动作:对符合条件的文件做什么操作;默认为输出至屏幕

      • 查找条件

        • 根据文件名查找
          • -name "文件名称":支持使用glob
          • -iname "文件名称",不区分字母大小写
          • -regex "PATTERN": 以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
        • 根据属主、属组查找
          • -user USERNAME
          • -group GROUPNAME
          • -uid UserID
          • -gid GroupID
          • -nouser:查找没有属主的文件
          • -nogroup:查找没有属组的文件
        • 根据文件类型查找
          • type TYPE
            • f:普通文件
            • d :目录文件
            • l:符号链接文件
            • s:套接字文件
            • b:块设备文件
            • c:字符设备文件
            • p:管道文件
        • 组合条件
          • 与:-a
          • 或:-o
          • 非:-not,!
          • 示例:
            • !A -a !B = !(A -o B)
            • !A -o !B = !(A -a B)
        • 根据文件大小来查找
          • size [+|-]#UNIT
            • 常用单位:k,M,G
            • #UNIT:表示范围:(#-1,#]
            • -#UNIT:表示范围:[0,#-1]
            • +#UNIT:表示范围:(#,∞)
        • 根据时间戳
          • 以天为单位
            • -atime [+|-]#
              • #:表示范围:[#,#+1)
              • -#:表示范围:(0,#)
              • +#:表示范围:[#+1,∞)
            • -mtime
            • -ctime
          • 以分钟为单位
            • -amin
            • -mmin
            • -cmin
        • 根据权限查找
          • perm [+|-] MODE
            • MODE:精确匹配权限
            • -MODE:每一类对象都必须同时拥有为其指定的权限标准
            • +MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可
        • 例子:find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} ;
    • 处理动作
      • -print:默认处理动作,显示至屏幕
      • -ls:类似于对查找到的文件执行"ls -l"命令
      • -delete:删除查找到的文件
      • -fls /path/to/somefile:查找到的所有文件的长格式信息保存至指定文件中
      • -ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令;
        • 对于每个文件执行命令之前,都会交互式要求用户确认
      • -exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
        • {}:用于引用查找到的文件名称自身
      • 注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令,有些命令不能接受过多参数,此时命令执行可能会失败,另一种方法可规避此问题
        • find | xargs COMMAND

xargs 解析:
之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如:
这个命令是错误的
find /sbin -perm +700 |ls -l
这样才是正确的
find /sbin -perm +700 |xargs ls -l

xargs 可以读入 stdin 的资料,并且以空白字元或断行字元作为分辨,将 stdin 的资料分隔成为 arguments 。 因为是以空白字元作为分隔,所以,如果有一些档名或者是其他意义的名词内含有空白字元的时候, xargs 可能就会误判了,如果需要处理特殊字符,需要使用-0参数进行处理。
选项解释 :
-0 :当sdtin含有特殊字元时候,将其当成一般字符,想/'空格等

文章来自个人专栏
技术
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0