find
在目录树中搜索文件和目录
语法
find [path] [expression]
参数
| 参数 | 说明 | 示例 | 级别 |
|---|---|---|---|
-name |
按文件名匹配(支持通配符) | find . -name "*.log" |
常用 |
-type |
按类型筛选(f=文件, d=目录) | find . -type f |
常用 |
-size |
按大小筛选 | find . -size +100M |
常用 |
-mtime |
按修改时间筛选(天) | find . -mtime -7 |
常用 |
-exec |
对结果执行命令 | find . -name "*.tmp" -exec rm {} \; |
进阶 |
-delete |
删除匹配的文件 | find . -name "*.bak" -delete |
危险 |
-maxdepth |
限制搜索深度 | find . -maxdepth 2 -name "*.js" |
常用 |
示例
查找所有 JS 文件
find src/ -name "*.js"
查找大文件
find / -type f -size +500M 2>/dev/null
2>/dev/null 隐藏权限错误
查找最近 7 天修改的文件
find . -type f -mtime -7
-7 表示 7 天内
查找并删除临时文件
find . -name "*.tmp" -type f -delete
谨慎使用 -delete
查找空目录
find . -type d -empty
常见错误
find: 'xxx': Permission denied
加 2>/dev/null 隐藏错误,或用 sudo
技巧
- find + xargs 比 -exec 更高效:find . -name '*.log' | xargs rm
- 用 -iname 忽略大小写
- 现代替代:fd 命令更快更易用