{"msg":"操作成功","code":200,"data":{"createBy":"admin","createTime":"2021-03-20 18:20:41","updateBy":"admin","updateTime":"2021-03-20 18:20:41","remark":null,"id":54,"articleTitle":"Shell（十三）find命令","articleUrl":"shell_find","articleThumbnail":"https://www.asumimoe.com/imgfiles/20220908/7769fde9ec5445068e41583cb1c71894.jpg","articleFlag":"0","draftStatus":"1","reprintStatement":"0","articleSummary":"find是 Linux/Unix 系统中用于查找文件和目录的命令，支持根据名称、类型、大小、时间等条件进行搜索，并能对搜索结果执行操作（如删除、复制等）。它是文件管理和系统维护中不可或缺的工具之一。","articleContent":"`find` 是 Linux/Unix 系统中用于**查找文件和目录**的命令，支持根据名称、类型、大小、时间等条件进行搜索，并能对搜索结果执行操作（如删除、复制等）。它是文件管理和系统维护中不可或缺的工具之一。\n\n---\n\n## 语法\n\n```bash\nfind [路径] [表达式]\n```\n\n---\n\n## 常用选项\n\n| 选项        | 说明                                    |\n| ----------- | --------------------------------------- |\n| `-name`     | 按文件名匹配                            |\n| `-type`     | 按文件类型匹配（如 `f` 文件，`d` 目录） |\n| `-size`     | 按文件大小匹配                          |\n| `-mtime`    | 按文件修改时间匹配                      |\n| `-ctime`    | 按文件创建时间匹配                      |\n| `-atime`    | 按文件访问时间匹配                      |\n| `-exec`     | 对搜索结果执行命令                      |\n| `-delete`   | 删除搜索结果                            |\n| `-maxdepth` | 限制搜索深度                            |\n| `-mindepth` | 设置最小搜索深度                        |\n| `-user`     | 按文件所有者匹配                        |\n| `-group`    | 按文件所属组匹配                        |\n| `-perm`     | 按文件权限匹配                          |\n| `-print`    | 打印搜索结果（默认行为）                |\n\n---\n\n## 基础使用示例\n\n### 1. 按文件名查找\n\n```bash\nfind /path/to/search -name \"*.txt\"\n```\n\n输出示例：\n\n```bash\n/path/to/search/file1.txt\n/path/to/search/dir/file2.txt\n```\n\n### 2. 按文件类型查找\n\n```bash\nfind /path/to/search -type f\n```\n\n输出示例：\n\n```bash\n/path/to/search/file1.txt\n/path/to/search/file2.log\n```\n\n### 3. 按文件大小查找\n\n```bash\nfind /path/to/search -size +1M\n```\n\n输出示例：\n\n```bash\n/path/to/search/largefile.zip\n/path/to/search/bigfile.img\n```\n\n### 4. 按修改时间查找\n\n```bash\nfind /path/to/search -mtime -7\n```\n\n输出示例：\n\n```bash\n/path/to/search/recentfile.txt\n/path/to/search/dir/newfile.log\n```\n\n### 5. 查找并删除文件\n\n```bash\nfind /path/to/search -name \"*.tmp\" -delete\n```\n\n### 6. 查找并执行命令\n\n```bash\nfind /path/to/search -name \"*.log\" -exec cp {} /backup \\;\n```\n\n### 7. 限制搜索深度\n\n```bash\nfind /path/to/search -maxdepth 2 -name \"*.conf\"\n```\n\n输出示例：\n\n```bash\n/path/to/search/config.conf\n/path/to/search/dir/subdir/config.conf\n```\n\n---\n\n## 进阶用法\n\n### 1. 查找空文件或目录\n\n```bash\nfind /path/to/search -empty\n```\n\n输出示例：\n\n```bash\n/path/to/search/emptyfile.txt\n/path/to/search/emptydir/\n```\n\n### 2. 查找特定权限的文件\n\n```bash\nfind /path/to/search -perm 644\n```\n\n输出示例：\n\n```bash\n/path/to/search/file1.txt\n/path/to/search/file2.conf\n```\n\n### 3. 查找并压缩文件\n\n```bash\nfind /path/to/search -name \"*.log\" -exec gzip {} \\;\n```\n\n### 4. 查找并统计文件数量\n\n```bash\nfind /path/to/search -type f | wc -l\n```\n\n输出示例：\n\n```bash\n1234\n```\n\n### 5. 查找并排序文件\n\n```bash\nfind /path/to/search -type f -exec ls -lh {} + | sort -k5,5h\n```\n\n输出示例：\n\n```bash\n-rw-r--r-- 1 user group  1.0K Jan 10 15:30 /path/to/search/smallfile.txt\n-rw-r--r-- 1 user group  1.0M Jan 10 15:30 /path/to/search/mediumfile.log\n-rw-r--r-- 1 user group  1.0G Jan 10 15:30 /path/to/search/largefile.zip\n```\n\n### 6. 查找并重命名文件\n\n```bash\nfind /path/to/search -name \"*.old\" -exec bash -c 'mv \"$0\" \"${0%.old}.new\"' {} \\;\n```\n\n### 7. 查找并修改文件权限\n\n```bash\nfind /path/to/search -type f -name \"*.sh\" -exec chmod 755 {} \\;\n```\n\n---\n\n## 实际应用场景\n\n### 1. 清理临时文件\n\n```bash\nfind /tmp -type f -mtime +7 -delete\n```\n\n### 2. 备份日志文件\n\n```bash\nfind /var/log -name \"*.log\" -exec cp {} /backup \\;\n```\n\n### 3. 查找大文件\n\n```bash\nfind /home -type f -size +100M\n```\n\n### 4. 查找特定用户的文件\n\n```bash\nfind /home -user alice\n```\n\n### 5. 查找并打包文件\n\n```bash\nfind /path/to/search -name \"*.conf\" -exec tar -czvf configs.tar.gz {} +\n```\n\n### 6. 查找并删除空目录\n\n```bash\nfind /path/to/search -type d -empty -delete\n```\n\n### 7. 查找并修改文件时间戳\n\n```bash\nfind /path/to/search -type f -name \"*.txt\" -exec touch {} \\;\n```\n\n---\n\n## 高级功能\n\n### 1. 查找并排除特定目录\n\n```bash\nfind /path/to/search -path \"/path/to/search/exclude\" -prune -o -name \"*.txt\" -print\n```\n\n### 2. 查找并显示文件详细信息\n\n```bash\nfind /path/to/search -type f -exec ls -lh {} \\;\n```\n\n### 3. 查找并计算文件总大小\n\n```bash\nfind /path/to/search -type f -exec du -ch {} + | grep total$\n```\n\n### 4. 查找并复制文件到目标目录\n\n```bash\nfind /path/to/search -type f -name \"*.jpg\" -exec cp --parents {} /target \\;\n```\n\n### 5. 查找并删除特定扩展名的文件\n\n```bash\nfind /path/to/search -type f -name \"*.bak\" -delete\n```\n\n### 6. 查找并修改文件内容\n\n```bash\nfind /path/to/search -type f -name \"*.txt\" -exec sed -i 's/old/new/g' {} \\;\n```\n\n### 7. 查找并生成文件列表\n\n```bash\nfind /path/to/search -type f -name \"*.conf\" -fprint filelist.txt\n```\n\n---\n\n## 学习资源\n\n- [find 命令官方文档](https://www.gnu.org/software/findutils/manual/html_mono/find.html)\n- [find 命令中文指南](https://wiki.archlinux.org/title/Find_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87))\n- [find 命令 Cheat Sheet](https://devhints.io/find)","categoryId":5,"viewCount":614,"categoryName":"Shell","author":"球接子","authorAvatar":null,"tagIds":[4],"tagNames":["Shell"]}}