• 删除最近7天没有访问的文件


    #!/bin/bash
    # Program:
    #         This program is used to delete photo for outlink servers.
    # History:
    #         2007/08/23        chentao        1.1
    #---------------------------------------------------------------
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH

    photo_lists=/usr/local/crontab/file_list
    photo_path=/var/photo

    photo_directory=$(find $photo_path -maxdepth 1 -type d | sed '1d' | tee  /usr/local/crontab/total_directory)


    today=$(date +%Y-%m-%d)
    interval_time=7

    echo "------------------------------------------------------------>" >> /var/log/del_log
    echo "del start $(date  +[%Y/%m/%d/%H:%M:%S])" >> /var/log/del_log

    for directory in $photo_directory
            do
            echo $directory
            find $directory -type f > $photo_lists

            for file in $(cat $photo_lists)
            do
                    last_access_time=$(stat $file | tail -3 | grep Access | awk '{print $2}')
                    today_s=$(date --date="$today" +%s)
                    old_s=$(date --date="$last_access_time" +%s)
                    interval_total_s=$(($today_s-$old_s))
                    interval_day=$(($interval_total_s/60/60/24))
                    echo "$interval_day"
                    if [ "$interval_day" -gt $interval_time ]; then
                            echo "delete  file  $file"
                            rm -rf $file
                    fi
            done
    done

    echo "del end   $(date  +[%Y/%m/%d/%H:%M:%S])" >> /var/log/del_log



    最近2天又研究一下这段代码的效率,在一个偶然的时间发现了find命令的强大功能,直接可以找出7天前的文件,所以将这个脚本优化一下,代码如下:


    #!/bin/bash
    # Program:
    #         This program is used to delete photo for outlink servers.
    # History:
    #         2007/08/23        chentao        1.1
    #---------------------------------------------------------------
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH

    photo_path=/opt/photo
    photo_directory=$(find $photo_path -maxdepth 1 -type d | sed '1d' | tee /usr/loc
    al/crontab/total_directory)



    echo "------------------------------------------------------------>" >> /var/log
    /del_log
    echo "del start $(date  +[%Y/%m/%d/%H:%M:%S])" >> /var/log/del_log

    for directory in $photo_directory
            do
            echo $directory
            find $directory -atime +15 -exec rm -rf {} \;
    done

    echo "del end   $(date  +[%Y/%m/%d/%H:%M:%S])" >> /var/log/del_log


    2个脚本比较一下,果然优化后的脚本效率高很多!

  • 相关阅读:
    koltin 泛型Any和*的区别
    开源组件| 开源组件调研
    Apache Dubbo线程监控
    相关性质和条件变量-ReentrantLock详解(2)-AQS-并发编程(Java)
    【Vue】el 和 data短小精湛的细节!
    物联网的商业模式洞察
    m基于FPGA和MATLAB的数字CIC滤波器设计和实现
    62GFS分布式文件系统
    Pyside6/Qt实现下拉复选框
    模拟实现vue3.x中的计算属性
  • 原文地址:https://blog.csdn.net/oligaga/article/details/128120711