perl删除目录下过期的文件的代码

发布时间:2019-07-17编辑:脚本学堂
需求:删除某目录下的过期文件,将超过7天的文件移动到备份目录,超过7天的目录(保留目录结构)移动到备份目录。

需求:
删除某目录下的过期文件,将超过7天的文件移动到备份目录,超过7天的目录(保留目录结构)移动到备份目录。
以下perl脚本通过检测文件的创建时间来进行判断,以确定删除哪些文件。
 

复制代码 代码如下:

#!C:/perl/bin/perl.exe

use strict;
use File::Copy::Recursive qw(fcopy rcopy dircopy fmove rmove dirmove);

my $dir      = "E:/download/ppt931/";
my $back_dir = "E:/download/del_backup/";

opendir DH, $dir or die "cannot chdir to $dir : $!";
for my $file ( readdir DH ) {
    ( $file eq '.' )  and next;
    ( $file eq '..' ) and next;

    #print $dir.$file."/n";
    #print time()."/n";
    #print ((stat($dir.$file))[10])."/n";

    if ( time() - ( stat( $dir . $file ) )[10] > ( 60 * 60 * 24 * 7 ) ) {

        #print $dir.$file."/n";

        if ( -d $dir . $file ) {

            print $dir. $file . "/n";
            $File::Copy::Recursive::CPRFComp = 1;
            dirmove( $dir . $file, $back_dir ) or die $!;
        }
        else {
            print $dir. $file . "/n";
            fmove( $dir . $file, $back_dir ) or die $!;
        }
    }
}
closedir DH;

备注:
关于模块“File::Copy::Recursive”的用法请参考CPAN。
(stat($dir.$file))[10]),获取文件的创建时间。
$File::Copy::Recursive::CPRFComp = 1,将保持目录结构不变。