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
dirFile=$1
cat $dirFile | while read line
do
eval ` echo $line | awk -F ' ' '{print $1}' | awk -F '=' '{print "dir="$2}' `
eval ` echo $line | awk -F 'lastModify ' '{print $2}' | awk -F '}' '{print "lastModify="$1}' `
eval ` echo $line | awk -F '(' '{print $2}' | awk -F ')' '{print "days="$1}' `
ArrDay=(`echo $days | awk -F ' ' '{print $0}'`)
if [ -z $lastModify ];then
lastModify=7
fi
if [ -z $ArrDay ];then
ArrDay=(1 15)
fi
#echo ${#ArrDay[*]}
#echo $lastModify
if [ ! -d $dir ]; then
echo $dir "doesn't exists!"
#exit
#continue
else
handleDir $dir
#continue
fi
done
#A=(12 29 1 2 3 )
#echo ${#A[*]}