find 命令入门:按名字、大小、时间找文件
文件一多,最头疼的是文件找不着:日志散在几个目录,备份不知藏在哪,磁盘快满了也不知是谁占了地方。用 find 命令,告诉它从哪里找、按什么条件找,就能把符合条件的文件列出来。
一、基本语法
find 的写法是:find 起始目录 条件 动作。不加条件,只给目录,就会列出下面所有文件和子目录:
find /var/log
只看当前目录,起点写成一个点:
find .
不写动作时,find 默认打印结果,也就是 -print 的效果。
二、按名字找
按名字用 -name,支持星号通配符。找当前目录下所有日志文件:
find . -name "*.log"
星号代表任意字符,也会匹配子目录里的日志。大小写不确定时用 -iname,会同时匹配 Report 和 report。加 -type f 只找普通文件,-type d 只找目录。
三、按大小找
按大小用 -size,单位 k 是 KB,M 是 MB,G 是 GB。加号表示大于,减号表示小于。找大于 100MB 的文件:
find /home/user -type f -size +100M
条件可以叠加,找 1MB 到 10MB 之间的文件:
find . -type f -size +1M -size -10M
四、按时间找
-mtime 按修改时间算天数,-mmin 按分钟算。减号表示以内,加号表示以外。找 7 天内修改过的文件:
find . -type f -mtime -7
-newer 可以找比某个文件更新的文件,例如找出比部署脚本更新的文件:
find . -type f -newer deploy.sh
五、组合与后续动作
多个条件默认同时满足。想表达或者,用 -o;想排除,用感叹号。-exec 可以把找到的文件交给另一条命令,例如逐个显示详细信息:
find . -type f -name "*.log" -exec ls -lh {} \;
大括号代表每一个找到的文件。-delete 能直接删除,但风险很大:务必先不加它跑一遍,确认无误再补上。
六、完整例子
找出 7 天内修改过、大于 10MB 的日志文件:
find . -type f -name "*.log" -size +10M -mtime -7
小结:find 的思路是起点定范围,条件定特征,动作定结果。先记住 -name、-size、-mtime 这三组,每次只加一个条件,跑一遍再叠加。现在就打开终端,照着例子各试一条,亲手跑出来的命令记得最牢。
- 点赞
- 收藏
- 关注作者
评论(0)