Linux 命令find之查找文件的示例
### Linux find命令详解 #### 一、概述 `find` 是 Linux 和类 Unix 系统中最常用的文件查找工具之一。它允许用户通过多种条件来定位系统中的文件或目录,包括但不限于文件名、文件类型、文件大小、文件权限等。本文将详细介绍 `find` 命令的各种使用场景和示例,帮助读者更好地理解和掌握这一强大的命令。 #### 二、基本语法 `find` 命令的基本语法如下: ```bash find 目标目录 [选项] [参数] ``` 其中: - **目标目录**:指定要搜索的起始目录。 - **选项**:定义搜索条件,如按文件名、文件类型、文件权限等进行搜索。 - **参数**:用于进一步细化搜索条件。 #### 三、常用选项 - **`-perm<权限数值>`**:查找具有特定权限数值的文件或目录。例如 `-perm 755` 可以用来查找具有 755 权限的文件。 - **`-type<文件类型>`**:根据文件类型进行搜索。支持的文件类型有:`f` (普通文件)、`l` (符号链接)、`d` (目录)、`c` (字符设备)、`b` (块设备)、`s` (套接字)、`p` (管道)。 - **`-name<范本样式>`**:根据文件名进行搜索。可以使用通配符 `*` 和 `?`。 - **`-empty`**:查找文件大小为 0 字节的文件,或空目录。 - **`-ls`**:将查找结果列出。 - **`-maxdepth<目录层级>`**:设置查找的最大目录层级。 - **`-mindepth<目录层级>`**:设置查找的最小目录层级。 - **`-exec<执行指令>`**:对查找的结果执行指定的命令。 - **`-ok<执行指令>`**:类似于 `-exec`,但在执行命令前会询问用户确认。 #### 四、示例 ##### 示例 1:查找当前目录及其子目录下所有文件和文件夹 ```bash find . ``` 这将列出当前目录及其所有子目录下的所有文件和文件夹。 ##### 示例 2:在 `/testLinux` 目录下查找以 `.txt` 结尾的文件名 ```bash find /tmp/cg/testLinux -name "*.txt" ``` 这里需要注意的是,路径必须是完整的。 ##### 示例 3:组合查找文件名以 `file1` 开头且/或/非 `file2` 开头的文件 ```bash # 以 file1 开头并且以 file2 开头的文件 find . -name "file1*" -a -name "file2*" # 以 file1 或者 file2 开头的文件 find . -name "file1*" -o -name "file2*" # 以 file1 开头但不是 file2 开头的文件 find . -name "file1*" -not -name "file2*" # 同上,使用 ! 替换 not find . -name "file1*" ! -name "file2*" ``` ##### 示例 4:根据文件类型进行搜索 ```bash # 查找当前目录及所有子目录下的普通文件 find . -type f ``` ##### 示例 5:基于目录深度进行搜索 ```bash # 限制最大深度为 3 find . -maxdepth 3 -type f # 限制最大深度为 2 find . -maxdepth 2 -type f ``` ##### 示例 6:基于文件权限进行搜索 ```bash # 搜索权限为 777 的文件 find . -type f -perm 777 # 搜索 .txt 格式的文件但权限不是 777 find . -type f -name "*.txt" ! -perm 777 ``` ##### 示例 7:借助 `-exec` 命令,将当前目录及子目录下所有 `.txt` 格式的文件以 `File: 文件名` 的形式打印出来 ```bash find . -type f -name "*.txt" -exec printf "File: %s\n" {} \; ``` ##### 示例 8:借助 `-exec` 命令,将当前目录及子目录下所有 3 天前的 `.txt` 格式的文件复制一份到 `old` 目录 ```bash find . -type f -mtime +3 -name "*.txt" -exec cp {} old \; ``` #### 五、文件类型和文件大小单位 - **文件类型参数**:`f` (普通文件)、`l` (符号链接)、`d` (目录)、`c` (字符设备)、`b` (块设备)、`s` (套接字)、`p` (管道)。 - **文件大小单位**:`b` (块, 512 字节)、`c` (字节)、`w` (字, 2 字节)、`k` (千字节)、`M` (兆字节)、`G` (吉字节)。 #### 六、其他选项 - **`-amin<分钟>`**:查找最近 <分钟> 内被访问过的文件或目录。 - **`-atime<24小时数>`**:查找最近 <24小时数> 内被访问过的文件或目录。 - **`-cmin<分钟>`**:查找最近 <分钟> 内被更改过的文件或目录。 - **`-ctime<24小时数>`**:查找最近 <24小时数> 内被更改过的文件或目录。 - **`-anewer<参考文件或目录>`**:查找比指定文件或目录更晚被访问的文件或目录。 - **`-cnewer<参考文件或目录>`**:查找比指定文件或目录更晚被更改的文件或目录。 - **`-daystart`**:从本日开始计算时间。 - **`-depth`**:从指定目录下最深层的子目录开始查找。 - **`-exec<执行指令>`**:对查找的结果执行指定的命令。 - **`-false`**:将 `find` 命令的返回值设为 false。 - **`-fls<列表文件>`**:将结果保存到指定的列表文件。 #### 七、总结 `find` 命令是非常强大和灵活的,通过各种选项的组合,可以满足复杂的文件搜索需求。无论是简单的文件名匹配还是复杂的权限和日期过滤,`find` 都能轻松应对。掌握 `find` 的使用方法,对于日常的文件管理和系统维护来说都是非常有用的技能。




















- 粉丝: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- (源码)基于PHP和HTMLCSSJavaScript的图书馆数据可视化系统.zip
- 法院信息化创建工作报告.docx
- 虚拟化理论基础PPT课件.pptx
- 解析马云菜鸟网络系统.ppt
- 网络营销课件项目网络营销基本理论章.pptx
- 胃癌术后医疗护理MicrosoftPowerPoint演示文稿.ppt
- 中国电信疏忙指导手册总册(网络拥塞).doc
- 电子商务网站javaweb课程设计报告样本.doc
- 数据通信与网络基础教学计划与教学大纲.pdf
- 新信息系统项目管理师-下午试卷-历年真题.docx
- 网络安全防范体系及设计原则.doc
- 信息化手段的应用对于教学效果的作用.doc
- 网络中心机房电气工程验收报告.doc
- 光纤通信工程中光缆线路敷设研究.doc
- 别让一个错别字影响了你的网站体验.doc
- 公司项目管理年终总结.doc


