我有一个网站,其中存储了一些下载文件。 说该网站包含
等文件GTP-UGP-LATEST-5.3.0.123.iso
GTP-UGP-LATEST-5.3.0.127.iso
GTP-UGP-LATEST-5.3.0.132.iso
GTP-UGP-LATEST-5.3.0.136.iso
PRE-UGP-LATEST-5.3.0.124.iso
PRE-UGP-LATEST-5.3.0.126.iso
PRE-UGP-LATEST-5.3.0.127.iso
PRE-UGP-LATEST-5.3.0.130.iso
这些文件的数量会随着版本号的增加而逐日增加。
我的最终目标是每天运行脚本(cronjob)以检查是否添加了任何新文件,如果是,则下载所有添加的新文件。
我的逻辑是获取以GTP *开头的所有文件的版本号(例如5.3.0.123)将其转换为(530123)然后进行比较以获得最大数字,然后检查存储在以前下载的版本号本地文件。如果不匹配,我们下载具有以GTP开头的最大版本号的文件
我们与以PRE *
开头的文件类似我很穷是正则表达,请帮助我。
请让我知道列出链接中的所有文件,然后将其写入本地文件。如果我知道那么多,我想我可以从那里拿走它
答案 0 :(得分:0)
更新:我会做以下(测试):
#!/usr/bin/env perl
use Data::Dumper qw(Dumper);
use File::Glob ':glob';
sub by_version {
my $v_a = $a;
my $v_b = $b;
$v_a =~ s/[^\d\.]//g;
$v_b =~ s/[^\d\.]//g;
my @version_a = split(/\./, $v_a);
my @version_b = split(/\./, $v_b);
for (my $i = 0; $i < scalar(@version_a); $i++) {
my $comp = $version_a[$i] <=> $version_b[$i];
return $comp if ($comp != 0);
}
return 0;
}
my @files = bsd_glob('GTP-UGP-LATEST-*.iso');
my @sorted_files = sort by_version @files;
print Dumper(@sorted_files);
答案 1 :(得分:0)
或者您可以从下载目录中进行rsync,因为您只需要新的。