张芷铭的个人博客

find 是 Linux 最强大的文件查找工具,支持按名称、类型、大小、时间等条件搜索。

基本语法

1
find [路径] [查找条件] [执行动作]

常用示例

按名称查找

1
2
3
find . -name "filename"      # 查找指定文件名
find . -name "*.txt"         # 查找所有 .txt 文件
find . -iname "*.txt"        # 忽略大小写

按类型查找

1
2
3
find /path -type f  # 普通文件
find /path -type d  # 目录
find /path -type l  # 符号链接

按修改时间查找

1
2
3
find . -mtime -7   # 7 天内修改
find . -mtime +30  # 30 天前修改
find . -mtime 7    # 恰好 7 天前修改

按大小查找

1
2
3
find . -size +10M  # 大于 10MB
find . -size -100k # 小于 100KB
find . -size 10M   # 恰好 10MB

按权限或用户查找

1
2
3
find . -user root    # 属于 root 用户
find . -group admin  # 属于 admin 组
find . -perm 644     # 权限为 644

查找空文件或目录

1
find . -empty

执行动作

查找并执行命令

1
2
3
find . -name "*.log" -exec rm {} \;     # 删除所有 .log 文件
find . -type f -exec chmod 755 {} \;    # 修改权限
find . -name "*.txt" -ls                 # 显示详细信息

{} 被替换为找到的文件名,\; 表示命令结束。

查找并删除

1
find . -name "*.bak" -delete

组合条件

1
2
find . -name "*.txt" -not -name "README.txt"  # 排除特定文件
find . -name "*.jpg" -o -name "*.png"         # 或条件

性能优化

1
2
find . -maxdepth 2 -name "*.txt"  # 限制搜索深度
find . -mindepth 3 -name "*.txt"  # 设置最小深度

总结

场景命令
按名称-name "*.txt"
按类型-type f/d/l
按时间-mtime +/-n
按大小-size +/-nM
执行命令-exec cmd {} \;
限制深度-maxdepth n

Comments