美文网首页
防手抖误删除脚本(shell)

防手抖误删除脚本(shell)

作者: 小王同学123321 | 来源:发表于2020-12-23 15:34 被阅读0次
    #!/bin/bash
      
    # 设置回收路径  
    trashPath=/home/search/.MyTrash  
      
    # 设置保存时间,172800为2天  
    period=172800  
      
    # 创建回收文件夹  
    if [ ! -d "$trashPath" ]; then  
        mkdir $trashPath  
    fi  
      
    # 清除命令中的所有开关选项  
    args=${@##-*}  
      
    # 根据当前时间新建临时文件夹  
    dest=$trashPath/`date "+%Y-%m-%d_%H:%M:%S_%s"`/  
    if [ ! -d "$dest" ]; then  
        mkdir $dest  
    fi  
      
    # 移动文件,如有必要,修改错误信息并输出  
    msg=`mv $args "$dest" 2>&1`  
    if [ ! "$msg" = "" ]; then  
        echo ${msg//mv/my_rm}  # 将错误信息中的“mv”替换成"my_rm"  
    fi  
      
    # ======================================  
    # 每天第一次使用这个命令后,清理一段时间以前回收的文件  
    # ------------------------------  
    # 定义清理旧文件的函数  
    function clearOldFile()  
    {  
        echo "delete old file, please wait ..."  
          
        now=`date "+%s"`  
        for folder in `ls $trashPath`  
        do  
            folderTime=${folder##*_}  # 获取文件名中“_”后的数字  
            gap=`expr $now - $folderTime`  
            # echo $folder    $gap  
            if [ $gap -gt $period ]; then  
                # echo rm $trashPath/$folder  
                /bin/rm -rf $trashPath/$folder  # 删除$period之前的文件夹  
            fi  
        done  
    }  
    # ------------------------------  
    # 设置标志文件路径  
    flagFile=$trashPath/.flag  
      
    today=`date "+%d"`  
    if [ -f "$flagFile" ]; then  
        lastTime=`cat $flagFile`  # 读取标志文件中的日期  
        if [ "$lastTime" -ne "$today" ]; then  # 如果不是今天的日期就清理  
            clearOldFile  
        fi  
    else  # 标志文件不存在也要清理  
        clearOldFile  
    fi  
    echo $today > $flagFile  # 输出今天的日期到标志文件  
    # =====================================
    
    

    在普通用户的~/.bashrc文件中添加
    alias rm=$HOME/.rm.sh

    相关文章

      网友评论

          本文标题:防手抖误删除脚本(shell)

          本文链接:https://www.haomeiwen.com/subject/kwtunktx.html