perl 删除目录下的过期文件

perl 删除目录下的过期文件,第1张

测试通过的代码如下:

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

把所有文件读入数组,然后排序,最后循环数组的所有项目,如果与下一条的前面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左边那个键)将所运行的命令包起来就行了,当然你需要有文件读写权限


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12107713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存