【案例】Linux(Ubuntu)定时删除3天前文件夹

我公司有个OCR上传图片系统,每天会生成一个类似2025-05-10的文件夹,为了运维方便和硬盘空间的使用,我需要每天去删除之前的旧文件夹,比较麻烦。借助了Deepseek的帮助,将内容分享一下并给自己Mark下。


1. 创建删除脚本

创建一个名为 delete_old_folders.sh 的脚本:

#!/bin/bash

# 计算三天前的日期(格式:YYYYMMDD)

target_date=$(date --date="3 days ago" +%Y%m%d)

# 目标文件夹路径

folder_path="/media/sda/server/Output/ocr/$target_date"

# 检查文件夹是否存在并删除

if [ -d "$folder_path" ]; then

rm -rf "$folder_path"

fi

将脚本保存到安全位置(如
/usr/local/bin/delete_old_folders.sh
),并赋予执行权限

sudo chmod +x /usr/local/bin/delete_old_folders.sh

2. 添加日志功能(可选)

为方便调试,可在脚本中添加日志记录:

确保日志文件有写入权限:

sudo touch /var/log/delete_old_folders.log

sudo chmod 644 /var/log/delete_old_folders.log

3. 设置定时任务

使用 crontab 设置每天8点执行脚本:

# 编辑当前用户的定时任务

crontab -e

0 8 * * * /usr/local/bin/delete_old_folders.sh

4. 测试脚本

  • 手动运行测试

/usr/local/bin/delete_old_folders.sh

  • 检查目标文件夹是否被删除,或查看日志确认。
  • 模拟日期测试(可选):
    临时修改脚本中的日期计算(如
    2 days ago),创建对应测试文件夹并验证删除。

注意事项

  • 路径权限:确保脚本执行用户(如root)有权限删除目标文件夹。
  • 时区问题:确认系统时区与脚本使用的时区一致。
  • 数据安全:使用 rm -rf 前务必检查路径,避免误删。

完成后,系统将每天8点自动删除三天前的文件夹。

如果是YYYY-MM-DD格式

修改脚本:

#!/bin/bash

# 计算三天前的日期(格式:YYYY-MM-DD)

target_date=$(date --date="3 days ago" +%Y-%m-%d) # <-- 修改日期格式

# 目标文件夹路径

folder_path="/media/sda/server/Output/ocr/$target_date"

# 检查文件夹是否存在并删除

if [ -d "$folder_path" ]; then

rm -rf "$folder_path"

fi

原文链接:,转发请注明来源!