find 是 Linux 下功能强大的文件搜索工具,支持按名称、类型、大小、时间、权限等条件查找文件,并能对搜索结果执行操作。以下是详细说明:
基本语法
find [搜索路径] [表达式]
- 搜索路径:默认为当前目录(
.),可指定多个路径。 - 表达式:由选项、测试条件、操作组成,决定搜索规则。
常用参数分类
1. 按文件名查找
-name "模式":按文件名匹配(区分大小写)。find /home -name "*.txt" # 查找 /home 下所有 .txt 文件-iname "模式":不区分大小写的文件名匹配。find . -iname "readme.md" # 查找 README.md、Readme.MD 等
2. 按文件类型查找
-type [类型标识符]:按文件类型筛选。find /var -type d # 查找所有目录 find ~ -type f # 查找普通文件 find / -type l # 查找符号链接常见类型:
f(文件)、d(目录)、l(链接)、b(块设备)、s(套接字)等。
3. 按文件大小查找
-size [+/-]大小单位:按文件大小筛选。find . -size +10M # 查找大于 10MB 的文件 find /tmp -size -5k # 查找小于 5KB 的文件单位:
c(字节)、k(KB)、M(MB)、G(GB)。
4. 按时间查找
按天数:
-atime [+/-]n:访问时间(access)。-mtime [+/-]n:内容修改时间(modify)。-ctime [+/-]n:状态修改时间(change,如权限)。
find /var/log -mtime -7 # 查找 7 天内修改过的文件 find ~ -atime +30 # 查找 30 天前访问过的文件按分钟数(更精确):
-amin,-mmin,-cmin,用法同上。
find /etc -mmin -60 # 查找 1 小时内修改过的文件
5. 按权限查找
-perm [权限模式]:匹配文件权限。find . -perm 644 # 查找权限为 644 的文件 find /usr/bin -perm /u=x # 查找用户有执行权限的文件
组合条件
逻辑运算符:
-a或-and:与(默认)。-o或-or:或。!或-not:非。
find /home -type f -size +1M # 查找大于 1MB 的普通文件 find . \( -name "*.sh" -o -name "*.py" \) # 查找 .sh 或 .py 文件 find /etc ! -user root # 查找不属于 root 的文件
对搜索结果执行操作
-exec [命令] \;:对查找到的文件执行命令({}表示文件名)。find /tmp -type f -mtime +7 -exec rm {} \; # 删除 7 天前的文件-ok [命令] \;:交互式执行(需确认)。批量处理技巧:
find . -name "*.log" -print0 | xargs -0 gzip # 压缩所有 .log 文件(处理含空格的文件名)
排除特定目录
使用
-prune跳过不需要搜索的目录:find / -path "/proc" -prune -o -name "*.conf" # 查找所有 .conf 文件,但跳过 /proc 目录
常用示例
按名称查找:
find /etc -name "nginx.conf"按类型查找:
find ~ -type f -empty # 查找空文件按大小清理文件:
find /var/log -size +100M -exec ls -lh {} \; # 列出超过 100MB 的文件按时间备份:
find /data -mtime -1 -exec tar -czvf backup.tar.gz {} +按权限修复:
find /webroot -type f ! -perm 644 -exec chmod 644 {} \; # 修改非 644 权限的文件
注意事项
- 使用
-delete删除文件时需谨慎,建议先替换为-ls或-print预览结果。 - 处理文件名含空格或特殊字符时,建议用
-print0和xargs -0组合。
掌握这些用法后,find 将成为你管理文件的得力工具!