【发布时间】:2014-03-25 23:57:21
【问题描述】:
我正在编写一个 Perl 脚本来打印目录中最后修改的子目录。
例如目录结构如下
amr/lex/
amr/kik/
amr/rtr/
amr/rtr4/
apr/rtr6tyh/
amr/rtr6yhu/
amr/d5tyh/
amr/d5kuk/
..
..
..
amr 中的所有这些目录,例如 lex、kik、rtr、rtr4、rtr6tyh、rtr6yhu、d5yh 等都有子目录
我必须在其中打印最后修改的子目录
例如
amr/lex 有 2 个目录 s1.0 和 s2.0。我必须打印最后修改的日期和时间。
目前为止有这个
#!/usr/bin/perl -w
use strict;
my $path = '/main/amr';
my $directory;
my @sub_dir;
my $var;
opendir ($directory, $path);
@sub_dir = readdir($directory);
print "@sub_dir";
foreach $var (@sub_dir)
{
opendir (my $temp, $var);
my @arr = readdir ($temp);
print "@arr\n";
}
我有以下脚本 但它的行为不稳定,它为某些人打印最新修改,但对其他人不打印
use strict;
my $path = '***<specify your own path >***';
my $directory;
my @sub_dir;
my $var;
my $var1;
my $now = time();
my $curr = 0; # most recent modified time
my $latestDir; # most recent sub dir
my $temp;
opendir ($directory, $path);
@sub_dir = readdir($directory);
foreach $var (@sub_dir) # dirA, dirB
{
#print "Test123 ". $path ."/". $var . "\n"; (for debug)
if($var ne "." && $var ne "..") {
opendir ($temp, $path ."/". $var);
my @arr = readdir ($temp);
foreach $var1 (@arr) { # subdir1
if($var1 ne "." && $var1 ne "..") {
my @stats = stat($var1); #call method stat on each subdir stat[9] - latest modified time
#print $var1 . "\n";
if($now-$stats[9] < $now-$curr || $curr == 0) {
$curr = $stats[9];
$latestDir = $var1;
}
}
} # end foreach
print $latestDir . " " . $var . "\n";
}
}# end foreach
知道这里出了什么问题... 非常感谢任何帮助
【问题讨论】:
-
您似乎缺少
use File::Find;,并且您没有使用其中的代码。 -
感谢您的回复,我正在尝试读取目录,将其存储到数组中并从那里开始......不确定这是否是正确的方法..
-
@Miller:当你编辑别人的帖子时,我认为你应该说的不仅仅是“在正文中添加了 46 个字符”
-
@JonathanLeffler:OP 说他们想要“打印目录中最后修改的子目录”。使用
File::Find这样做会很尴尬且没有必要 -
请举例说明你想要的输出
标签: perl