如何将perl中的文件列表从一个目录复制到另一个目录

时间:2016-09-09 10:00:49

标签: file grep perl copy

在UNIX中,根据文件格式和上次修改日期从DIRECTORY_PATH获取文件,并将文件移至ARCHIVE_DIRECTORY

对于那个使用下面的代码

DIRECTORY_PATH=/apps/data/central_archive/
NO_OF_DAYS_ARCHIVE=10
FILE_FORMAT=txt
EXEC_CMD=mv
ARCHIVE_DIRECTORY=/apps/data/archive/

res=`find $DIRECTORY_PATH -mtime $NO_OF_DAYS_ARCHIVE -name "*$FILE_FORMAT*" -type f|grep "$DIRECTORY_PATH[^/]*$" | grep -v '/rf/'`

这里如何在Perl中实现相同的逻辑?

1 个答案:

答案 0 :(得分:1)

单向,使用File::Find::Rule

use warnings;
use strict;

use File::Copy;
use File::Find::Rule;

my $dir = 'src/';
my $arch_dir = 'archive/';
my $days = 10;
my $type = '*.txt';

if (! -d $arch_dir){
    mkdir $arch_dir or die $!;
}

my @files = File::Find::Rule->file()
                            ->name($type)
                            ->mtime('> ' . (time() - $days*24*60*60))
                            ->in($dir);

for (@files){
    move $_, $arch_dir or die $!;
    print "moved $_ to $arch_dir/\n";
}
相关问题