我正在解释整个过程,以了解我正在做什么以及我的查询是什么。 实际上我写了一个Perl脚本,它将登录到ftp Unix服务器并检查文件是否在特定目录中正常处理。如果文件在这些处理目录中超过10分钟,它将触发对我的团队邮件ID的警报。 此Perl脚本通过在任务计划程序中计划的批处理文件在Windows服务器上运行,并且每5分钟运行一次。 我能够将ftp文件的时间转换为我的Windows服务器时间。到目前为止,每件事情都完美无缺。 现在我有一个新的要求,我应该检查同一个ftp服务器中备份目录的最后修改日期。最初我的想法是列出文件,并可以获得最后收到的文件日期(这与我提到的上述过程类似)。但我的主要限制是备份目录将拥有近1000个文件和列表,并且获取时间不是一个好方法。 请告诉我我可以做些什么来获得修改日期& ftp目录的时间。
以下是我之前用于获取时间和模块的模块。 FTP文件的日期。 使用File :: Listing qw(parse_dir);
答案 0 :(得分:0)
PERL中的stat DIRHANDLE
操作在显示目录的路径名时,会显示有关该项的一系列信息。在数组中是修改时间。
请参阅http://perldoc.perl.org/functions/stat.html
您可能必须使用此方法才能使其正常工作,尤其是当您在目录中观察修改时间的子目录发生更改时。
答案 1 :(得分:-1)
(CC)http://www.perlmonks.org/?node_id=190020
my $file_mdtm = $f->mdtm($file) or die "Can't find $file in $dir\n";
my $five_days = 3600*24*5; # five days in seconds
if (time - $file_mdtm >= $five_days)
{
print "$file is more than 5 days old\n";
}
答案 2 :(得分:-1)
您可以使用此代码查看任何特定文件夹中文件的详细信息:
use strict;
use warnings;
use Net::FTP;
my ($ftp, $host, $user, $pass, $source_dir);
$host = "your_host_name";
$user = "Your_user_id";
$pass = "Your_password";
$source_dir = "any_source_DIR";
print "Connect in...\n";
$ftp = Net::FTP->new($host, Debug => 0) || die "Couldn't ftp to $host: $@";
print "Logging in...\n";
$ftp->login($user, $pass) || die "Couldn't login to $host: ".$ftp->message;
print "Getting files from \"$source_dir\"\n";
$ftp->cwd($source_dir);
my @files = $ftp->dir();
foreach (@files){
print "$_ \n";
}