### CentOS 7 下的 Find 命令详解 #### 一、Find 命令概述 `find` 命令是在 Linux 或类 Unix 操作系统中非常强大的一个工具,用于搜索文件系统中的文件。它提供了多种选项来精确地定位符合特定条件的文件。 #### 二、Find 命令的基本语法 `find` 命令的基本格式如下: ```bash find [path] [expression] ``` - **[path]**:要搜索的目录路径。 - **[expression]**:用来指定查找条件的一系列参数。 #### 三、Find 命令的关键参数 1. **-print** - 功能:将匹配的文件输出到标准输出。 - 示例:`find . -name "*.txt" -print` 2. **-exec** - 功能:对匹配的文件执行给定的 shell 命令。 - 示例:`find . -name "*.txt" -exec ls -l {} \;` 3. **-ok** - 功能:与 `-exec` 类似,但在执行命令前会询问用户确认。 - 示例:`find . -name "*.txt" -ok rm {} \;` 4. **-name** - 功能:根据文件名查找文件。 - 示例:`find . -name "*.txt"` (查找当前目录下的所有 `.txt` 文件) 5. **-perm** - 功能:按照文件的权限来查找。 - 示例:`find . -perm 755` (查找权限为 755 的文件) 6. **-user** - 功能:按照文件的所有者来查找。 - 示例:`find . -user alice` (查找属于用户 alice 的文件) 7. **-group** - 功能:按照文件所属的组来查找。 - 示例:`find . -group staff` (查找属于组 staff 的文件) 8. **-mtime** - 功能:根据文件修改时间来查找。 - 示例:`find . -mtime -7` (查找在过去 7 天内被修改过的文件) 9. **-atime** - 功能:根据文件最后访问时间来查找。 - 示例:`find . -atime +30` (查找过去 30 天未被访问过的文件) 10. **-ctime** - 功能:根据文件状态改变的时间来查找。 - 示例:`find . -ctime -3` (查找最近 3 天内状态发生改变的文件) 11. **-nogroup** - 功能:查找那些没有有效组名的文件。 - 示例:`find . -nogroup` 12. **-nouser** - 功能:查找那些没有有效用户名的文件。 - 示例:`find . -nouser` 13. **-newer** - 功能:查找比指定文件更新的文件。 - 示例:`find . -newer file1 ! file2` 14. **-type** - 功能:根据文件类型来查找。 - 示例:`find . -type d` (查找所有的目录) 15. **-size** - 功能:根据文件大小来查找。 - 示例:`find . -size +1000000c` (查找大于 1MB 的文件) 16. **-depth** - 功能:先查找子目录中的文件,然后再查找当前目录。 - 示例:`find . -depth -name "temp*"` 17. **-fstype** - 功能:查找位于指定文件系统的文件。 - 示例:`find . -fstype ext4` 18. **-mount** - 功能:限制搜索范围只在同一个文件系统内。 - 示例:`find . -mount -name "*.pdf"` 19. **-follow** - 功能:如果遇到符号链接,则会跟踪指向的目标文件。 - 示例:`find . -follow -name "link*"` 20. **-prune** - 功能:忽略某些目录。 - 示例:`find . -prune -o -name "*.log" -print` 21. **-cpio** - 功能:将匹配的文件备份到磁带设备中。 - 示例:`find / -cpio -o /dev/rmt0` 22. **-exec** 和 **-ok** 的具体用法 - `find` 命令中 `-exec` 和 `-ok` 参数后跟的是要执行的命令,格式为 `'command' {} \;`。 - 其中 `{}` 表示由 `find` 命令找到的文件名,`\;` 表示命令的结束。 - 示例:`find . -name "*.txt" -exec rm {} \;` #### 四、实战案例 1. **在 `$HOME` 目录下查找 `.txt` 文件并显示:** ```bash $ find ~ -name "*.txt" -print ``` 2. **在当前目录下查找以大写字母开头的文件:** ```bash $ find . -name "[A-Z]*" -print ``` 3. **查找 `/etc` 目录下以 `host` 开头的文件:** ```bash $ find /etc -name "host*" -print ``` 4. **查找以两个小写字母和两个数字开头的 `.txt` 文件:** ```bash $ find . -name "[a-z][a-z][0-9][0-9].txt" -print ``` 5. **查找所有用户都可读写执行的文件:** ```bash $ find . -perm -007 -exec ls -l {} \; ``` 6. **查找所有的目录:** ```bash $ find . -type d -print ``` 7. **查找所有的普通文件:** ```bash $ find . -type f -print ``` 8. **查找长度大于 1MB 的文件:** ```bash $ find . -size +1000000c -print ``` 9. **查找长度为 100 字节的文件:** ```bash $ find . -size 100c -print ``` 10. **查找长度超过 10 块的文件(1 块 = 512 字节):** ```bash $ find . -size +10 -print ``` 11. **查找 `/etc` 目录下的 `passwd` 文件,并检查其中是否包含 `cnscn` 用户:** ```bash $ find /etc -name "passwd*" -exec grep "cnscn" {} \; ``` 12. **查找当前目录下以 `yao` 开始的文件,并输出它们的文件类型:** ```bash $ find . -name "yao*" | xargs file ``` 13. **查找当前目录下以 `yao` 开始的文件,并重定向输出到 `/tmp/core.log`:** ```bash $ find . -name "yao*" | xargs echo "" > /tmp/core.log ``` 14. **查找当前目录下以 `yao` 开始的文件,并移除其他用户的写权限:** ```bash $ find . -name "yao*" | xargs chmod o-w ``` #### 五、总结 通过上述内容的学习,我们可以看到 `find` 命令的强大之处在于其能够灵活地组合各种参数,从而实现复杂的文件查找需求。无论是基本的文件名查找还是基于文件属性的高级筛选,`find` 都能胜任。掌握 `find` 命令对于 Linux 系统管理员来说是非常重要的技能之一。


































剩余37页未读,继续阅读


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


最新资源
- 浅析互联网对乡村小学数学教育的作用.docx
- 金融大数据平台建设方案.docx
- 谈对综合布线系统电气保护的分析与应用.docx
- 中国医卫行业信息化建设与IT应用趋势研究报告.pdf
- 云计算在卫生职业教育资源共享中的应用.docx
- 配电网自动化建设与运行管理问题探讨1.docx
- 安防监控常用软件你知道多少.doc
- 网络科技有限公司章程范本.doc
- 图像处理中直方图双向均衡技术研究分析报告.doc
- linu操作系统讲解.ppt
- 顺利通过PMP的备考心得.docx
- 互联网监管与网络道德建设试题及复习资料.doc
- 基于PLC实现搬运机械手的控制研究设计.doc
- 附表四计划开、竣工日期和施工进度网络图.xls
- 从社会语言学的角度看网络语言.docx
- 网络视频监控在小型超市中的应用-公共场所其他.docx


