你有没有过忘了自己写的脚本存在哪个目录里,翻半天找不到?或者怀疑服务器被入侵了,要找最近被篡改的文件?我之前碰到服务器被扫端口植入了后门,用下面的方法10秒就找到了最近被修改的恶意文件,快速清理完没造成损失。还有一次同事写了个自动化脚本,忘了存哪,我用locate命令1秒就帮他找到了。今天分享的3种方法,全是我在Debian 13上实测过的,找最近修改的文件10秒就能出结果,不用一个个目录翻,不管是找文件还是排查问题都非常好用。

find是最常用的找文件命令,支持按时间、按类型、按用户、按后缀等各种条件过滤,适合找任意时间、任意条件的文件。常用命令:
find / -mtime -1 -type f,-1表示1天以内,+1表示1天以前find / -mmin -60 -type f,按分钟过滤,更精确find /opt /etc -mtime -1 -name "*.sh" -type f,指定扫描目录,不用扫整个磁盘,速度更快find / -mtime -1 -user www-data -type f,排查web入侵的时候非常好用,能快速找到黑客上传的恶意脚本。适用场景:排查被篡改的文件、找不确定存在哪个目录的文件、需要复杂过滤条件的场景,Debian 13默认自带find命令,不用额外装。如果知道文件在当前目录或者某个特定目录下,用ls命令最快,不用扫描整个磁盘,1秒就能出结果。常用命令:
ls -lhtls -lht | head -n 10ls -lht | grep " $(date +%b' '%d)",配合grep过滤当天修改的文件。适用场景:知道文件在某个特定目录下,快速找最近修改的文件,速度最快,不用等扫描。个人经验:我平时找自己写的脚本都是用这个方法,几秒钟就能找到,非常方便。locate是基于系统数据库索引的查找命令,不用扫描磁盘,直接查索引,1秒就能出结果,比find快几十倍。常用命令:
locate -r ".*" --newer-mtime "1 day ago"locate -r "\.sh$" --newer-mtime "1 hour ago"注意:locate的数据库默认每天自动更新一次,刚修改的文件可能搜不到,手动执行updatedb就能更新索引,需要root权限,更新索引很快,几秒就能完成。适用场景:找不是刚修改的文件,速度最快,1秒就能出结果,适合快速定位文件位置。Debian 13专属:locate默认已经装在findutils包里,不用额外装,老版本Debian需要单独装mlocate包。对了,如果你需要给几十台上百台Debian服务器定期扫描被篡改的文件,手动一台台扫太麻烦,可以用Hermes Agent配合优云智算Agent Plan自动完成扫描和告警,原生适配Hermes,支持所有主流国产模型,49元/月起比单独买API省70%,链接:https://www.volcengine.com/activity/codingplan?ac=MMAP8JTTCAQ2&rc=L5UZ7FVA我自己现在管20多台Debian 13服务器,用Hermes自动每天扫描系统目录的修改情况,发现异常文件自动告警,好几次提前发现了扫描和入侵尝试,没造成损失。
Q1:find命令扫描整个磁盘很慢怎么办?A:可以指定扫描的目录,比如只扫/etc、/var、/opt这些常用的系统和业务目录,不用扫整个磁盘,速度快很多,排查入侵的时候一般也不需要扫无关的目录。Q2:locate搜不到刚修改的文件怎么办?A:手动执行updatedb更新索引就行,需要root权限,更新索引很快,几秒就能完成,更新完就能搜到最新的文件了。Q3:能不能找被修改过的系统配置文件?A:可以,用dpkg --verify就能找出所有和默认版本不一致的系统配置文件,比find更精准,专门用来排查系统文件被篡改的情况。Q4:找到被篡改的文件之后怎么处理?A:先备份文件留证,然后对比原始文件看修改了什么内容,清理后门,然后恢复原始文件,最后查入侵原因补漏洞,比如修改弱密码、关闭不需要的端口、加固防火墙。
感谢你读到最后,如果觉得有帮助,点个“赞”+“推荐”,“分享”给更多人