用 find 快速定位文件:按名字、时间和大小
服务器上文件一多,靠眼睛翻目录就不现实了。find 是 Linux 自带的定位工具:它从指定目录出发,按你给的条件一层层往下找,名字、时间、大小都能当条件,组合起来用,排查问题会快很多。
一、按名字找:先缩小范围。最常用的是按名字找。find /var/log -name “.log" 会在 /var/log 下面找出所有以 .log 结尾的文件。名字里有大写、大小写不确定时,把 -name 换成 -iname,它会忽略大小写,find . -iname “readme” 就能把 README、Readme 一起找出来。只想找目录或只想找普通文件,可以再加一个类型条件:-type d 是目录,-type f 是普通文件。比如 find /etc -type f -name ".conf”,只返回配置文件,不会被同名目录干扰。
二、按时间找:锁定最近动过的文件。出问题后,第一步往往是问“最近改过什么”。-mtime -1 表示 1 天内修改过的文件,-mtime +7 表示 7 天前修改的。find /opt -mtime -1 -type f 能快速列出昨天以来动过的文件,配合报错时间,基本能圈定嫌疑范围。注意 mtime 是“内容被修改”的时间,不是创建时间。如果是想找最近被访问过的文件,用 -atime;想找权限、属主等属性被改过的,用 -ctime。三个时间容易混,排查时先确认自己要的是哪一种。
三、按大小找:揪出占空间的大文件。磁盘告警时,按大小找最直接。find / -size +100M -type f 会找出大于 100M 的文件,单位可以换成 k、G。找到之后别急着删,先用 du -h 确认它属于哪个服务、能不能删,日志文件尤其要先确认有没有在被写入。
四、组合条件:一次问对问题。find 的条件默认是“且”的关系,可以直接叠加:find /var -type f -name “*.log” -mtime -3 -size +10M,意思是 /var 下面、3 天内改过、大于 10M 的日志文件。条件越具体,结果越少,越接近答案。如果目录里有不想进的子目录,比如备份目录或挂载点,用 -prune 排除它,或者先用 -maxdepth 2 限制只往下找两层,避免在海量文件里跑太久。
五、两个常见坑。一是权限不足:扫系统目录时会出现 Permission denied,这不一定是错误,只是当前用户读不到那个目录,换有权限的用户或用 sudo 再跑一次即可。二是忘记加起始目录:find 不加路径默认从当前目录找,在根目录下全盘扫会很慢,先想清楚从哪里开始找。记住一个顺序就够了:先定范围(从哪个目录找),再定条件(名字、时间还是大小),最后看结果做判断。find 本身不改文件,只负责找,把“找”和“删”分开,操作就安全多了。
- 点赞
- 收藏
- 关注作者
评论(0)