我是 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,这就是为什么我需要当前的日期。
如果你能负担得起通过文件数据工作,你可以做
find -mmin +14400 -delete
find是完成这类任务的常用工具:
find
find ./my_dir -mtime +10 -type f -delete
解释
./my_dir
-mtime +10
-type f
注意 ./my_dir的存在,以避免坏的意外!
只是添加了上面的 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。但是要仔细检查你的路径。
注意 : 确保通过 date-setup timezone/ntp 正确设置服务器时间。另外,用“ stat filename”检查文件时间
注意 : mtime 可以替换为 mmin,以便更好地控制,因为 mtime 在处理获取文件在天上下文中的时间戳时会丢弃所有分数(大于2天(+ 2天)实际上意味着3天)
-mtime +$days ---> -mmin +$((60*24*$days))