测试通过的代码如下:
use Time::Localmy ($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
把所有文件读入数组,然后排序,最后循环数组的所有项目,如果与下一条的前面6个字符相同,就删除。
opendir(DIR,'.')@f=<DIR>
close(DIR)
@f=sort @f
foreach $i (1..($#f-1)){
print "rmdir $f[$i] \n" if (substr($f[$i],0,6) eq substr($f[$i+1],0,6))
}
用perl run几个shell命令就行了用unzip命令 先把目标zip解压到文件夹
rm 目标zip文件
然后cd 文件夹名 &&rm -rf 要删除的文件 &&cd ../
zip 命令再把文件夹压缩
rm -rf 解压文件夹就好了
perl 里面调用shell命令只需用反引号`(数字1左边那个键)将所运行的命令包起来就行了,当然你需要有文件读写权限
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)