perl 删除目录下的过期文件

比如一个路径为C:\upload\下有多个文件这些文件的格式为2014-11-25.log,即日期.log现在要写个perl程序,保留最新日期为5天的五个文件,如何写,急... 比如一个路径为C:\upload\下有多个文件
这些文件的格式为2014-11-25.log,
即日期.log
现在要写个perl 程序,保留最新日期为5天的五个文件,如何写,急求
谢谢各位大神
展开
 我来答
阳光上的桥
推荐于2016-02-26 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部

测试通过的代码如下:

use Time::Local;
my ($tm,$ym,$file);
print "删除过期文件\n";
opendir(DIR,'.'); #修改本行以打开其他文件夹
$ym=time() - 3600*24*5;
while($file=readdir(DIR)){
  if ($file =~ /(\d+)-(\d+)-(\d+)\.log/i){
    $tm=timelocal(0,0,0,$3,$2-1,$1-1900);
    if ($tm < $ym) {
      print "eral $file\n";
      #unlink($file); #我不想删除我的测试文件
    }else{
      print "keep $file\n";
    }
  }
}
closedir(DIR);

在我的机器上运行结果为:

E:\TEMP\文件\exp>c.pl

删除过期文件

keep 2015-1-11.log

eral 2015-1-4.log

更多追问追答
追问
能不以系统当前日期为标准吗?就是想在文件夹中至少有五个最近日期的log文件
这最新的五个文件的日期名可能不是和系统相近的五天,谢谢
追答
以上代码是以系统日期为准的呀,请看第五行,含义就是获取五天前的时刻。
匿名用户
2015-01-14
展开全部
chdir 'C:\upload';
@Files=sort <*.log>;
for(0..$#Files-5){unlink $_}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式