首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

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

2012-07-16 
linux shell 递归目录文件 删除指定日期之外的文件和空目录#!/bin/sh#Name delFileAsDate.sh#Creation dat

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[*]}

?


================================================附:目录列表文件 dirListdir=/home/wusx/workspace/aoes/free/lib keep={dayOfMonth ("1 4 15") lastModify 7}dir=/u02/site2dir=/home/wusx/workspace/TranslateSiteManagerdir=/u01dir=/home/wusx/workspace/TranslateSiteManager/src keep={lastModify 7}dir=/home/wusx/workspace/TranslateSiteManager/src keep={dayOfMonth ("26")}

热点排行
Bad Request.