Linux - Shell - find - 基础
2024-09-06 00:41:49
概述
- find 基础
背景
- 查找文件
- 人的记忆能力, 是有限的
- 计算机里的文件数量, 虽然不是无限, 但是也不少
- 要去找那些 记不清楚的文件, 必然要用查找
- 查找文件
准备
OS
- centos7
用户
- root
- 其他用户在执行中, 可能会遇到权限的问题
- 这里就不讲了...
- 其他用户在执行中, 可能会遇到权限的问题
- root
1. find
概述
- 强大的文件查找工具
功能
- 查找文件
- 约束条件查找文件
- 对查找后的内容, 可以执行操作
命令结构
> find [path] [options] [opt]
opt
概述
- find 之后的操作
默认
- 打印完整的文件路径
其他
- 这个以后再说
- opt
- 这个以后再说
2. path
概述
- path 参数
path
- 搜索路径
- 这个算是第一个 约束条件
- 约束了地址, 可以让 查找范围更加精确
- 搜索路径
例子
# 1. 搜索 当前路径 下, 所有文件
> find
# 2. 搜索 特定路径 下, 所有文件
> find /etc
# 3. 搜索 多个路径 下, 所有文件
> find ~ /etc
3. 约束: 文件名
概述
- 添加 文件名 文件名约束
-name
- 功能
- 添加 文件名 的限定条件
- 支持 通配符
- 功能
例子
# 精确查找文件名
> find /etc/ -name 'passwd'
# 基于 通配符 的 模糊查找
> find /etc/ -name 'pass*'
结果
- -name 里的条件, 匹配的是 文件名, 或者 目录名
- 如果中间路径带有有 关键字 的话, 不会被 匹配出来
- -name 里的条件, 匹配的是 文件名, 或者 目录名
4. 约束: 正则路径
概述
- 更加强大的 约束
- 约束的对象, 是 文件路径
-regex
- 功能
- 添加 路径 的限定条件
- 正则
- 功能
例子
> find /etc/ -regex '.*pass.*'
结果
- 路径匹配
- 路径中含有关键字, 也会被 搜索出来
- 能力更强大
- 路径中含有关键字, 也会被 搜索出来
- 路径匹配
其他
- 还有 -regextype 可以指定 正则类型
5. 约束: 用户
概述
- 以 用户 作为约束条件
-user
- 功能
- 限定 文件 或 目录 的所属用户
- 功能
例子
> find /etc -user "tss"
其他
- 如果用户不存在, 会有异常提示
- 如果要找没有用户的文件, 可以用 -nouser
6. 约束: 用户组
概述
- 以 用户组 作为约束条件
-group
- 功能
- 限定 文件 或 目录 的所属用户组
- 功能
例子
> find /etc -group "tss"
其他
- 如果用户组不存在, 会有异常提示
- 如果要找没有用户组的文件, 可以用 -nogroup
7. 约束: 文件权限
概述
- 以 文件执行权限 作为约束
-perm
- 功能
- 限定 文件权限
- 功能
例子
# 方案1: 直接查找 权限
> find /etc -perm 755
其他
- 这个 选项 的表达方式很灵活, 我只选了最简单的一种
- 如果需要了解, 请参看 man
- 这个 选项 的表达方式很灵活, 我只选了最简单的一种
8. 约束: 文件类型
概述
- 以 文件类型 作为约束
-type
功能
- 约束类型
类型
- b: 块设备
- c: 字符设备
- d: 目录
- p: 管道
- f: 文件
- l: 连接
- s: socket
- D: door(Solaris 专用)
例子
> find /etc -type f
9. 后续
没错, 这次就这么多
- 这些东西算是 最简单, 最常用 的了
后面命令, 参数会稍微 复杂一些
- 都写一起, 其实不太好消化
- 我有点懒得写了
- 最近产能不足, 干脆分成两篇吧...
ps
ref
- 每天一个linux命令(19):find 命令概览
- 这个博客, 是我见到的 每天一个 linux 命令 系列, 最老的博客, 应该是 真正的原作 吧
- 每天一个linux命令(22):find 命令的参数详解
- linux find -regex 使用正则表达式
- 每天一个linux命令(19):find 命令概览
通配符和正则
- 这个肯定是不一样的啊
- 有空区分一下
- 这个肯定是不一样的啊
最新文章
- 全国SHP地图数据赠送
- CSS样式----图文详解:css样式表和选择器
- Scala 深入浅出实战经典 第53讲:Scala中结构类型实战详解
- HTML5新特性之WebSocket
- js中数组以及for循环的使用
- strange error encountered today in ROS
- struts2视频学习笔记 22-23(基于XML配置方式实现对action的所有方法及部分方法进行校验)
- Report_客制化以PLSQL输出HTML标记实现WEB报表(案例)
- <;转载>;无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
- 查看当前支持的MySQL字符集的命令
- nginx log format
- Java中读取txt文件中中文字符时,出现乱码的解决办法
- POJ-2184 Cow Exhibition---01背包变形(负数偏移)
- 牛客小白月赛12 I (tarjan求割边)
- Kubernetes实战(一):k8s v1.11.x v1.12.x 高可用安装
- c++ linux socket编程 c++网络编程
- 批标准化 Batch Normalization
- WDA基础十三:常用模板管理
- MySQL免安装配置(亲测过,请放心借鉴)
- 为PartialView传递一个参数
热门文章
- Codeforces Round #617 (Div. 3) 补题记录
- 我的翻译--一个针对TP-Link调试协议(TDDP)漏洞挖掘的故事
- 【Unity|C#】基础篇(20)——枚举器与迭代器(IEnumerable/IEnumerator)
- 链表问题----删除链表的中间节点和a/b处的节点
- UI自动化测试的Page Object模式
- 转行小白成长路--java基础
- Oracle 12c中CDB与PDB实例参数更改影响实验
- K3/Cloud树形单据体的rowId赋值
- DeepLearningDTU: Building a RNN step by step
- 时间日期转换工具类,获取当前时间YYYYMMDD24HHMISS、YYYYMMDDHHMISS