zoukankan      html  css  js  c++  java
  • shell 定时清理一定时间内未使用的目录下文件脚本

    配合crontab即可实现标题

    使用 bash + 脚本 + 目录

    bash xx.sh /root/xx/

    脚本如下:

    #!/bin/bash
    # 将current转换为时间戳,精确到秒
    CURRENT_TIMESTAMP=`date +%s`
    CURRENT_TIMESTAMP=$((CURRENT_TIMESTAMP+0))
    # echo $CURRENT_TIMESTAMP
    function read_dir(){
    # 两个反引号,表示运行系统命令
    for file in `ls $1`
     do
      if [ -d $1"/"$file ]
      then
      read_dir $1"/"$file
      else
      # 在此处处理文件
      echo "######################################"
      echo "文件:"$1"/"$file
      # 文件名
        FILE_NAME=$1"/"$file
        # 获取文件最后打开时间戳
        LAST_OPEN_TIMESTAMP=`stat -c %X  $FILE_NAME`
        LAST_OPEN_TIMESTAMP=$((LAST_OPEN_TIMESTAMP+0))
        # echo $LAST_OPEN_TIMESTAMP
        # 删除7天未打开文件
        TIME_DIFF=$[ CURRENT_TIMESTAMP - LAST_OPEN_TIMESTAMP ]
        # 距离上次打开多久
        echo "距离上次打开已过了: "$TIME_DIFF""
        # 修改时间阈值
        if [ $TIME_DIFF -gt $[ 7*24*3600 ] ]
        then
        `rm -f $FILE_NAME`
        echo "状态:近期未打开,已删除"
        else
        echo "状态:近期有打开"
        fi
        # 格式化时间戳
        FORMATE_DATE=`date '+%Y-%m-%d %H:%M:%S' -d @$LAST_OPEN_TIMESTAMP`
        echo "最后打开时间:"
        echo $FORMATE_DATE
      fi
     done
    }
    read_dir $1
    FORMATE_DATE_CURRENT_TIMESTAMP=`date '+%Y-%m-%d %H:%M:%S' -d @$CURRENT_TIMESTAMP`
    echo "当前时间:"
    echo $FORMATE_DATE_CURRENT_TIMESTAMP
    ------ 往事如烟,伴着远去的步伐而愈加朦胧。未来似雾,和着前进的风儿而逐渐清晰!
  • 相关阅读:
    单链表
    找最长最短字符串
    注解
    Json字符串
    java的反射机制
    java类的加载与加载器
    String StringBuilder StringBuffer
    查看运行某类时当前的进程状态
    迷宫小游戏
    类的初始化过程、super关键字与函数绑定
  • 原文地址:https://www.cnblogs.com/cutesnow/p/15637718.html
Copyright © 2011-2022 走看看