在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中实现相同的逻辑?
答案 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";
}