以下脚本会将修改时间超过三小时的文件从/tmp/test1
文件夹移动到/data/ARCHIVE
文件夹。
问题是,如果ARCHIVE
文件夹中的文件与test1
文件夹中的文件名相同,则会覆盖它们,这是不需要的。
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
use File::Copy;
my $dstdir = '/data/ARCHIVE/';
@ARGV = ("/tmp/test1") unless @ARGV;
print STDERR "Begin @ ", scalar localtime, "\n";
find(
sub {
if ( -f $_ && -M _ >= 3 / 24 ) {
print STDERR "Moving '$_'\n";
move( $File::Find::name, $dstdir ) or die "$!\n";
}
},
@ARGV
);
print STDERR "Ended @ ", scalar localtime, "\n";
1;
答案 0 :(得分:1)
将纪元添加到文件名中。但是,不要每秒运行一次以上的代码。
my $now = strftime( '%Y%m%d%H%M%S', localtime );
find(
sub {
if ( -f $_ && -M _ >= 3 / 24 ) {
print STDERR "Moving '$_'\n";
my $dst = "$dstdir/$_.$now";
move( $File::Find::name, $dst ) or die "$!\n";
}
},
@ARGV
);