Shell Script — Get all files modified after

前端 未结 9 2490
礼貌的吻别
礼貌的吻别 2020-12-12 09:57

I\'d rather not do this in PHP so I\'m hoping a someone decent at shell scripting can help.

I need a script that runs through directory recursively and finds all fil

9条回答
  •  时光取名叫无心
    2020-12-12 10:18

    This script will find files having a modification date of two minutes before and after the given date (and you can change the values in the conditions as per your requirement)

    PATH_SRC="/home/celvas/Documents/Imp_Task/"
    PATH_DST="/home/celvas/Downloads/zeeshan/"
    
    cd $PATH_SRC
    TODAY=$(date  -d "$(date +%F)" +%s)
    TODAY_TIME=$(date -d "$(date +%T)" +%s)
    
    
    for f in `ls`;
    do
    #       echo "File -> $f"
            MOD_DATE=$(stat -c %y "$f")
            MOD_DATE=${MOD_DATE% *}
    #       echo MOD_DATE: $MOD_DATE
            MOD_DATE1=$(date -d "$MOD_DATE" +%s)
    #       echo MOD_DATE: $MOD_DATE
    
    DIFF_IN_DATE=$[ $MOD_DATE1 - $TODAY ]
    DIFF_IN_DATE1=$[ $MOD_DATE1 - $TODAY_TIME ]
    #echo DIFF: $DIFF_IN_DATE
    #echo DIFF1: $DIFF_IN_DATE1
    if [[ ($DIFF_IN_DATE -ge -120) && ($DIFF_IN_DATE1 -le 120) && (DIFF_IN_DATE1 -ge -120) ]]
    then
    echo File lies in Next Hour = $f
    echo MOD_DATE: $MOD_DATE
    
    #mv $PATH_SRC/$f  $PATH_DST/$f
    fi
    done
    

    For example you want files having modification date before the given date only, you may change 120 to 0 in $DIFF_IN_DATE parameter discarding the conditions of $DIFF_IN_DATE1 parameter.

    Similarly if you want files having modification date 1 hour before and after given date, just replace 120 by 3600 in if CONDITION.

提交回复
热议问题