Linux - Shell - find - 基础

  1. 概述

    1. find 基础
  2. 背景

    1. 查找文件
      1. 人的记忆能力, 是有限的
      2. 计算机里的文件数量, 虽然不是无限, 但是也不少
      3. 要去找那些 记不清楚的文件, 必然要用查找
  3. 准备

    1. OS

      1. centos7
    2. 用户

      1. root
        1. 其他用户在执行中, 可能会遇到权限的问题
          1. 这里就不讲了...

1. find

  1. 概述

    1. 强大的文件查找工具
  2. 功能

    1. 查找文件
    2. 约束条件查找文件
    3. 对查找后的内容, 可以执行操作
  3. 命令结构

    > find [path] [options] [opt]
    
  4. opt

    1. 概述

      1. find 之后的操作
    2. 默认

      1. 打印完整的文件路径
    3. 其他

      1. 这个以后再说
        1. opt

2. path

  1. 概述

    1. path 参数
  2. path

    1. 搜索路径
      1. 这个算是第一个 约束条件
      2. 约束了地址, 可以让 查找范围更加精确
  3. 例子

    # 1. 搜索 当前路径 下, 所有文件
    > find 
    # 2. 搜索 特定路径 下, 所有文件
    > find /etc
    # 3. 搜索 多个路径 下, 所有文件
    > find ~ /etc
    

3. 约束: 文件名

  1. 概述

    1. 添加 文件名 文件名约束
  2. -name

    1. 功能
      1. 添加 文件名 的限定条件
      2. 支持 通配符
  3. 例子

    # 精确查找文件名
    > find /etc/ -name 'passwd'
    # 基于 通配符 的 模糊查找
    > find /etc/ -name 'pass*'
    
  4. 结果

    1. -name 里的条件, 匹配的是 文件名, 或者 目录名
      1. 如果中间路径带有有 关键字 的话, 不会被 匹配出来

4. 约束: 正则路径

  1. 概述

    1. 更加强大的 约束
    2. 约束的对象, 是 文件路径
  2. -regex

    1. 功能
      1. 添加 路径 的限定条件
      2. 正则
  3. 例子

    > find /etc/ -regex '.*pass.*'
    
  4. 结果

    1. 路径匹配
      1. 路径中含有关键字, 也会被 搜索出来
        1. 能力更强大
  5. 其他

    1. 还有 -regextype 可以指定 正则类型

5. 约束: 用户

  1. 概述

    1. 以 用户 作为约束条件
  2. -user

    1. 功能
      1. 限定 文件 或 目录 的所属用户
  3. 例子

    > find /etc -user "tss"
    
  4. 其他

    1. 如果用户不存在, 会有异常提示
    2. 如果要找没有用户的文件, 可以用 -nouser

6. 约束: 用户组

  1. 概述

    1. 以 用户组 作为约束条件
  2. -group

    1. 功能
      1. 限定 文件 或 目录 的所属用户组
  3. 例子

    > find /etc -group "tss"
    
  4. 其他

    1. 如果用户组不存在, 会有异常提示
    2. 如果要找没有用户组的文件, 可以用 -nogroup

7. 约束: 文件权限

  1. 概述

    1. 以 文件执行权限 作为约束
  2. -perm

    1. 功能
      1. 限定 文件权限
  3. 例子

    # 方案1: 直接查找 权限
    > find /etc -perm 755
    
  4. 其他

    1. 这个 选项 的表达方式很灵活, 我只选了最简单的一种
      1. 如果需要了解, 请参看 man

8. 约束: 文件类型

  1. 概述

    1. 以 文件类型 作为约束
  2. -type

    1. 功能

      1. 约束类型
    2. 类型

      1. b: 块设备
      2. c: 字符设备
      3. d: 目录
      4. p: 管道
      5. f: 文件
      6. l: 连接
      7. s: socket
      8. D: door(Solaris 专用)
  3. 例子

    > find /etc -type f 
    

9. 后续

  1. 没错, 这次就这么多

    1. 这些东西算是 最简单, 最常用 的了
  2. 后面命令, 参数会稍微 复杂一些

    1. 都写一起, 其实不太好消化
    2. 我有点懒得写了
    3. 最近产能不足, 干脆分成两篇吧...

ps

  1. ref

    1. 每天一个linux命令(19):find 命令概览
      1. 这个博客, 是我见到的 每天一个 linux 命令 系列, 最老的博客, 应该是 真正的原作 吧
    2. 每天一个linux命令(22):find 命令的参数详解
    3. linux find -regex 使用正则表达式
  2. 通配符和正则

    1. 这个肯定是不一样的啊
      1. 有空区分一下
posted @ 2019-12-17 15:49  轩辕拾銉  阅读(1111)  评论(0编辑  收藏  举报