使用Unix中的shell脚本删除超过10天的文件

时间:2012-11-21 08:46:13

标签: bash shell unix find

我是shell脚本的新手,有人可以帮忙吗?我想删除文件夹中的脚本,从当前日期回到10天。 脚本如下:

2012.11.21.09_33_52.script
2012.11.21.09_33_56.script
2012.11.21.09_33_59.script

脚本将每隔10天与Crontab一起运行,这就是我需要当前日期的原因。

3 个答案:

答案 0 :(得分:387)

find是执行此类任务的常用工具:

find ./my_dir -mtime +10 -type f -delete

<强>说明

  • ./my_dir您的目录(替换为您自己的目录)
  • -mtime +10超过10天
  • -type f仅限文件
  • -delete毫不奇怪。 删除它以在执行整个命令之前测试find过滤器

并注意./my_dir存在以避免不良意外!

答案 1 :(得分:14)

只需调整shell脚本以删除旧文件

#!/bin/bash

timestamp=$(date +%Y%m%d_%H%M%S)
path="/data/backuplog"
filename=log_back_$timestamp.txt
log=$path/$filename

find $path -name "*.txt"  -type f -mtime +7 -print -delete >> $log

echo "Backup:: Script Start -- $(date +%Y%m%d_%H%M)" >> $log

START_TIME=$(date +%s)

... code for backup ...or any other operation ....


END_TIME=$(date +%s)

ELAPSED_TIME=$(expr $END_TIME - $START_TIME)


echo "Backup :: Script End -- $(date +%Y%m%d_%H%M)" >> $log
echo "Elapsed Time ::  $(date -d 00:00:$ELAPSED_TIME +%Hh:%Mm:%Ss) "  >> $log

代码建立在sputnick的答案之上,并增加了一些东西。

  • 使用时间戳命名的日志文件
  • 指定日志文件夹
  • 仅查找日志文件夹中的* .txt文件
  • 删除超过7天的日志文件(假设这是用于备份日志)
  • 记录开始/结束时间
  • 计算经过的时间......

答案 2 :(得分:6)

如果您能负担得起通过文件数据工作,您可以

find -mmin +14400 -delete