在linux中快速定位过去24小时内被修改的文件,首选find命令:用-mtime -1筛选24小时整数倍,-mmin -1440实现分钟级精度,-newermt配合参照文件可固定时间窗口,ls结合date仅适用于当前目录交互式检查。

如果您需要在Linux系统中快速定位过去24小时内被修改的文件,例如进行安全审计或排查异常行为,则需依赖时间戳精确匹配的命令工具。以下是解决此问题的步骤:
一、使用find命令按修改时间筛选
该方法直接读取文件的mtime(内容修改时间)属性,通过-mtime参数计算相对天数,精度为24小时整数倍,适用于大多数审计场景。
1、执行以下命令查找当前目录及其所有子目录中最近24小时内修改过的普通文件:
2、输入:find . -type f -mtime -1
3、如需限定搜索深度为1层(仅当前目录,不含子目录),添加-maxdepth 1参数:
4、输入:find . -maxdepth 1 -type f -mtime -1
5、若需同时显示详细信息(权限、大小、修改时间),可在末尾追加-exec ls -lh {} \;:
6、输入:find . -type f -mtime -1 -exec ls -lh {} \;
二、使用find命令按分钟级修改时间筛选
当审计要求更高时间精度(如确认某次入侵操作发生在几小时前),-mmin参数可实现分钟级过滤,避免-mtime因四舍五入导致的误差。
1、执行以下命令查找过去1440分钟(即24小时)内被修改的所有普通文件:
2、输入:find . -type f -mmin -1440
3、如仅关注最近2小时内修改的文件,将1440替换为120:
4、输入:find . -type f -mmin -120
5、配合-print0与xargs -0可安全处理含空格或特殊字符的文件路径:
6、输入:find . -type f -mmin -1440 -print0 | xargs -0 ls -lh
三、使用ls命令结合日期过滤
该方法通过解析ls输出的时间字段,利用当前系统日期动态匹配,适合交互式快速检查,但不递归子目录且受locale和time-style影响。
1、运行命令列出当前目录所有文件,并以%m/%d/%y格式显示修改日期,再用grep匹配今日日期:
2、输入:ls -al --time-style=+%D | grep "$(date +%D)"
3、如需排除目录仅保留普通文件,可先用find生成列表再交由ls处理:
4、输入:find . -maxdepth 1 -type f -print0 | xargs -0 ls -al --time-style=+%D | grep "$(date +%D)"
5、为增强可读性,可添加-S参数按文件大小降序排列结果:
6、输入:ls -alS --time-style=+%D | grep "$(date +%D)"
四、使用find配合参照文件进行时间比较
该方法创建一个时间锚点文件,后续所有搜索均以该文件时间为基准,适用于需复现固定时间窗口的审计任务。
1、创建一个空文件作为时间参照,其mtime设为24小时前:
2、输入:touch -d "24 hours ago" /tmp/ref_time
3、查找所有修改时间晚于该参照文件的普通文件:
4、输入:find . -type f -newermt "$(stat -c '%y' /tmp/ref_time | cut -d' ' -f1)"
5、删除参照文件以清理临时资源:
6、输入:rm /tmp/ref_time










