#!/bin/bash range=10 dir="/app/xx/logs" bak_dir="/app/xx/logs_archive" cd $dir for i in `seq 1 $range` do time=`date -d "-$i day" +%F` file_count=`ls -al --full-time|grep "$time"|grep ^-|wc -l` if [ $file_count -gt 0 ];then mkdir -p ${bak_dir}/${time} ls -al --full-time|grep "${time}"|grep ^-|awk '{print$9}'|xargs -i mv {} ${bak_dir}/${time} else continue; fi done