我是shell脚本的新手,有人能帮我吗?我想删除文件夹中的脚本,从当前日期恢复到10天。脚本如下所示:
2012.11.21.09_33_52.script
2012.11.21.09_33_56.script
2012.11.21.09_33_59.script使用Crontab,脚本将每10天运行一次,这就是为什么我需要当前日期的原因。
发布于 2012-11-21 16:54:10
find是完成这类任务的常用工具:
find ./my_dir -mtime +10 -type f -delete解释
./my_dir您的目录(替换为您的own)-mtime +10早于10 days-type f files-delete,这并不奇怪。在执行整个find之前,删除它以测试您的command筛选器
并且要注意./my_dir的存在,以避免不好的惊喜!
发布于 2013-07-26 19:57:07
我只是对上面的shell脚本进行了一些修饰,以删除较旧的文件,但需要记录日志并计算已用时间
#!/bin/bash
path="/data/backuplog/"
timestamp=$(date +%Y%m%d_%H%M%S)
filename=log_$timestamp.txt
log=$path$filename
days=7
START_TIME=$(date +%s)
find $path -maxdepth 1 -name "*.txt" -type f -mtime +$days -print -delete >> $log
echo "Backup:: Script Start -- $(date +%Y%m%d_%H%M)" >> $log
... code for backup ...or any other operation .... >> $log
END_TIME=$(date +%s)
ELAPSED_TIME=$(( $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代码添加了一些东西。
以时间戳命名的
的开始/结束时间和已用时间
注意:要测试代码,只需使用-print而不是-print -delete。但是一定要仔细检查你的路径。
注意:请确保您的服务器时间通过- setup时区/ntp设置正确。另外,使用'stat filename‘检查文件时间
注意:mtime可以替换为mmin以实现更好的控制,因为mtime在处理获取日期上下文中文件的时间戳时会丢弃所有片段(大于2天(+2天)实际上表示3天
-mtime +$days ---> -mmin +$((60*24*$days))发布于 2012-11-21 16:50:18
如果你负担得起通过文件数据工作,你可以这样做
find -mmin +14400 -deletehttps://stackoverflow.com/questions/13489398
复制相似问题