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

我是新的shell脚本,任何人都可以帮忙吗? 我想从当前date删除文件夹中的脚本到10天。 这些脚本看起来像:

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

该脚本将每10天运行一次Crontab,这就是为什么我需要当前date。

find是这种任务的常用工具:

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

说明

  • ./my_dir你的目录(用你自己的replace)
  • -mtime +10 10天以上的时间-mtime +10
  • -type f只有文件
  • -delete没有意外。 在执行整个命令之前删除它以testing您的findfilter

./my_dir存在,以避免不好的惊喜!

只是精神上的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的答案,并增加了一些东西。

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

如果你可以通过文件数据工作,你可以做

 find -mmin +14400 -delete