删除一个月以前的文件

王朝other·作者佚名  2008-05-18
宽屏版  字体: |||超大  

我要实现在一个目录下根据ls -l文件的日期,删除一个月以前的文件,我用了以下code,但是提示Ntemp: Undefined variable。还有在一开始就提示Command not found。

#!/bin/csh

#echo "取得系统当前日期"

NDate=`date |awk '{print $1}'`

Ntemp=`date |awk '{print $2}'`

NYear=`date |awk '{print $6}'`

#echo $Ntemp

case $Ntemp in

Jan) NMonth="01" ;;

Feb) NMonth="02" ;;

Mar) NMonth="03" ;;

Apr) NMonth="04" ;;

May) NMonth="05" ;;

Jun) NMonth="06" ;;

Jul) NMonth="07" ;;

Aug) NMonth="08" ;;

Sep) NMonth="09" ;;

Oct) NMonth="10" ;;

Nov) NMonth="11" ;;

Dec) NMonth="12" ;;

*) echo "not found

";exit ;;

esac

#echo $NMonth

#echo "取得要删除的文件日期月份"

if [NMonth==1] then

DMonth = 12

else

DMonth = NDate-1

fi

#echo "取得文件日期"

while

do

FDate=`ls -l |awk '{print $7}'`

Ftemp=`ls -l |awk '{print $6}'`

#FYear=`ls -l |awk '{print $0}'`

FileName=`ls -l |awk '{print $9}'`

case $Ftemp in

Jan) FMonth="01" ;;

Feb) FMonth="02" ;;

Mar) FMonth="03" ;;

Apr) FMonth="04" ;;

May) FMonth="05" ;;

Jun) FMonth="06" ;;

Jul) FMonth="07" ;;

Aug) FMonth="08" ;;

Sep) FMonth="09" ;;

Oct) FMonth="10" ;;

Nov) FMonth="11" ;;

Dec) FMonth="12" ;;

*) echo "not found

";exit ;;

esac

#echo $FMonth

if [DMonth>FMonth] then

rm -f $FileName

elif [DMonth==FMonth]&&[NDate>FData] then

rm -f $FileName

fi

done

请教各位大虾,怎么样去除这种错误?而且,假如我要删除一年前的文件,用ls -l命令怎么找年的时间?我用的环境是OSF1 alpha V4.0.

谢谢!

至于你的代码错误有:

1. 你这个怎么会是c shell?应该是 B shell 阿。所以第一行应为 #!/bin/sh

2. if [NMonth==1] then 错了!,这句有多个错误啊应为 if [ $NMonth -eq 1 ] ; then

或者 if [ $NMonth -eq 1 ] #换行

then

3. DMonth = NDate-1 错了。应为 DMonth=`expr $NDate - 1`

。。。。。。

不找了,建议你找shell书先看看。

NDate=`date |awk '{print $1}'` 可以用 date '+%d' 更方便。

测试一下语句:

#!/bin/sh

echo "test

"

echo -e "test

"

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有