日期:2014-05-16  浏览次数:20830 次

linux shell 递归目录文件 删除指定日期之外的文件和空目录

#!/bin/sh

#Name delFileAsDate.sh

#Creation date: 2010-10-30

#Author: Frank Wu

?

?

Usage(){

#{{{

?? ? ? ?echo 'Usage: sh '$0' <dirList name>' 1>&2

?? ? ? ?echo 'e.g.' 1>&2

?? ? ? ?echo ' ?sh '$0' /home/username/workspace/delFileAsDate ?/home/username/workspace/dirList' 1>&2

}

#}}}

if [ $# ?-lt 1 ]; then

?? ? ? ?Usage && exit 1

fi

?

?

handleDir(){

? ? ? if ls $1/* 2> tmp > tmp

?? ? ? ? ? ? ? ?then

?? ? ? ? ? ? ? ? ? ? rm -rf $1/tmp #Delet tmp file

?? ? ? ? ? ? ? ? ? ? file=`ls $1`

?? ? ? ? ? ? ? ? ? ? for name in $file

?? ? ? ? ? ? ? ? ? ? do

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if [ -d $1/$name ];

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?then

handleDir $1/$name

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?else

#echo $1/$name

handleFile $1/$name

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?fi

? ?done ? ? ? ? ? ?

?? ? ? ? ? ? ? else

rm -rf $1/tmp

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?echo "remove ....... Empty dirtionary"$1

#rm -rf $1

fi

}

?

handleFile(){

?? ? ? ?fName=$1

?? ? ? ?if [ -f $fName ];

?? ? ? ?then

?? ? ? ? ? ? ? ?eval `ls -l $fName | awk {' print "day="$7'}`

?? ? ? ? ? ? ? # echo $day

flag=false

? ? ? ?for days in ${ArrDay[*]}

do

#echo "array[i] = "$days?

if [[ "$day" == "$days" ]];

then

? flag=true

fi

done

if [[ "$flag" == "false" ]];

then

handleLastModify $fName

#echo "can removing file"

#rm $fName

fi ?

?? ? ? ?fi

}

?

handleLastModify(){

flName=$1

nowTime=$(date +%s)

((limit=$lastModify*86400))

eval `stat $flName | grep Change|awk '{print "changeDate="$2}'`

#echo $flName

changeTime=`date -d "$changeDate" +%s`

((marginTime=$nowTime-$changeTime))

if (($marginTime > $limit)); then

#rm $flName

echo "delete file .....changeDate= "$changeDate"...fileName ="$flName

fi

}

?

#handleLastModify /home/wusx/test/fds/fdfd

?

dirF