perl 删除目录下的过期文件
比如一个路径为C:\upload\下有多个文件这些文件的格式为2014-11-25.log,即日期.log现在要写个perl程序,保留最新日期为5天的五个文件,如何写,急...
比如一个路径为C:\upload\下有多个文件
这些文件的格式为2014-11-25.log,
即日期.log
现在要写个perl 程序,保留最新日期为5天的五个文件,如何写,急求
谢谢各位大神 展开
这些文件的格式为2014-11-25.log,
即日期.log
现在要写个perl 程序,保留最新日期为5天的五个文件,如何写,急求
谢谢各位大神 展开
2个回答
展开全部
测试通过的代码如下:
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 $_}
@Files=sort <*.log>;
for(0..$#Files-5){unlink $_}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询