我需要根据目录内修改文件的时间戳按升序列出目录。我有以下代码可以获取所有目录。但是,我需要按时间戳升序排列的目录。
我知道我们可以使用 ls -ltr
但在 ls -ltr
上使用 awk 可能会在我只需要特定列的输出时得到意想不到的结果。如果有人可以帮助我,请告诉我
#!/usr/bin/perl
my $baseDir = "<My base dir>";
opendir my $dh, $baseDir
or die "$0: opendir: $!";
my @dirs = grep {-d "$baseDir/$_" && ! /^\.{1,2}$/ && ! /^\.[a-zA-Z]*/} readdir($dh);
print "DIRs is @dirs\n";
最佳答案
您可以根据相对于脚本启动时间的目录修改时间进行排序-M
my @dirs =
map $_->[0],
sort { $b->[1] <=> $a->[1] }
map [ $_, -M "$baseDir/$_" ],
grep {-d "$baseDir/$_" && ! /^\.{1,2}$/ && ! /^\.[a-zA-Z]*/}
readdir($dh);
关于linux - 根据 Perl 目录中更新的时间戳获取目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30572905/