我是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一起运行,这就是我需要当前日期的原因。
答案 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的答案之上,并增加了一些东西。
答案 2 :(得分:6)
如果您能负担得起通过文件数据工作,您可以
find -mmin +14400 -delete