You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现每月1号运行脚本删除上月1号前修改的文件?

当然可行!这是个非常实用的周期性文件清理需求,完全可以通过脚本轻松实现

核心实现思路

我们可以借助find命令结合动态日期计算,精准定位并删除目标文件——关键是要自动算出上月1号的日期,再以此为基准筛选出修改时间更早的文件。

具体脚本示例(Linux/GNU环境)

  1. 先在脚本里计算上月1号的日期:
# 获取当前月1号,再往前推1个月得到上月1号的标准日期格式
last_month_first=$(date -d "$(date +%Y-%m-01) -1 month" +%Y-%m-01)

比如3月1号运行时,这个变量会被自动赋值为202X-02-01。

  1. 用find命令执行删除操作:
# 替换成你要清理的目标目录路径
target_dir="/path/to/your/target/folder"
# 查找所有在上月1号之前修改的文件并删除
find "$target_dir" -type f ! -newermt "$last_month_first" -delete

参数说明:

  • ! -newermt "$last_month_first":筛选修改时间早于上月1号的文件
  • -type f:只针对文件(避免误删目录)
  • -delete:直接删除匹配文件(建议先换成-print测试,确认要删的文件列表正确后再用-delete)

适配macOS系统的小调整

macOS自带的date命令参数和GNU版本不同,计算上月1号可以改成:

last_month_first=$(date -v-1m -d "$(date +%Y-%m-01)" +%Y-%m-01)

或者安装GNU date(通过brew install coreutils),之后用gdate代替date,就能和Linux脚本保持完全一致。

定时运行设置

要让脚本每月1号自动执行,只需在crontab里添加一条任务:

# 每月1号0点0分运行清理脚本
0 0 1 * * /path/to/your/cleanup_script.sh

重要注意事项

  • 先测试再删除:第一次运行时把-delete换成-print,核对输出的文件列表是否符合预期,避免误删重要数据
  • 权限检查:运行脚本的用户需要拥有目标目录的读写权限
  • 备份关键文件:如果清理的是重要业务数据,建议先做备份再执行删除操作

内容的提问来源于stack exchange,提问作者dhman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:11:11