这是脚本
#!/usr/bin/perl
use strict;
use warnings;
my($dayago, $prefix, $today_timestamp, $f,
$sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst,
$daysago, $now, $old, @oldbackup);
opendir(DIR, "/home/ftpusr/backup/") || die("Error cannot open directory");
$now = time();
$dayago = 3;
#($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($now-$dayago*60*60*24);
#$today_timestamp=sprintf("%4d%02d%02d",$year+1900,$mon+1,$mday);
#$old_timestamp=
$prefix = ".CATN0000.";
do {
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
= localtime($now - $dayago * 60 * 60 * 24);
$today_timestamp = sprintf("%4d%02d%02d", $year + 1900, $mon + 1, $mday);
while ($f = readdir(DIR)){
if ( $f =~ /$prefix$today_timestamp/ ) {
print "$f\n";
}
}
$dayago -= 1;
print "$dayago\n";
print "$today_timestamp\n";
} until ($dayago == 0);
closedir(DIR);
这是目录中的文件
-rw-r----- 1 db2inst1 db2grp1 184569856 2013-03-13 10:24 GSRTC.0.db2inst1.NODE0000.CATN0000.20130313102253.001
-rwxr-xr-x 1 db2inst1 db2grp1 259 2013-03-13 13:00 space_check.sh
-rw-r----- 1 db2inst1 db2grp1 1071665152 2013-03-14 10:06 AWDRT.0.db2inst1.NODE0000.CATN0000.20130314095856.001
-rw-r----- 1 db2inst1 db2grp1 184569856 2013-03-14 10:20 GSRTC.0.db2inst1.NODE0000.CATN0000.20130314101854.001
-rw-r--r-- 1 db2inst1 db2grp1 0 2013-03-14 13:49 bkp.sh
-rwxrwxrwx 1 db2inst1 db2grp1 1070 2013-03-14 20:12 awdrt_tabspc_report.sh
-rw-r----- 1 db2inst1 db2grp1 1085296640 2013-03-15 10:11 AWDRT.0.db2inst1.NODE0000.CATN0000.20130315100434.001
-rw-r----- 1 db2inst1 db2grp1 184569856 2013-03-15 10:30 GSRTC.0.db2inst1.NODE0000.CATN0000.20130315102900.001
-rw-r----- 1 db2inst1 db2grp1 1075859456 2013-03-16 12:16 AWDRT.0.db2inst1.NODE0000.CATN0000.20130316121043.001
当我运行脚本时,输出是:
GSRTC.0.db2inst1.NODE0000.CATN0000.20130313102253.001
2
20130313
1
20130314
0
20130315
相反,我想要这些文件:
-rw-r----- 1 db2inst1 db2grp1 1071665152 2013-03-14 10:06 AWDRT.0.db2inst1.NODE0000.CATN0000.20130314095856.001
-rw-r----- 1 db2inst1 db2grp1 184569856 2013-03-14 10:20 GSRTC.0.db2inst1.NODE0000.CATN0000.20130314101854.001
-rw-r----- 1 db2inst1 db2grp1 1085296640 2013-03-15 10:11 AWDRT.0.db2inst1.NODE0000.CATN0000.20130315100434.001
-rw-r----- 1 db2inst1 db2grp1 184569856 2013-03-15 10:30 GSRTC.0.db2inst1.NODE0000.CATN0000.20130315102900.001
我想要的是它应该保留最后一个文件并删除旧备份。帮助表示赞赏。