linux - 根据 Perl 目录中更新的时间戳获取目录

标签 linux perl

我需要根据目录内修改文件的时间戳按升序列出目录。我有以下代码可以获取所有目录。但是,我需要按时间戳升序排列的目录。

我知道我们可以使用 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/

相关文章:

perl - 使用 awk 或 perl 从 CSV 中提取特定列(解析)

perl - 如何启用扩展鼠标模式?

perl - 为什么我的 Perl CGI 脚本会出现 500 内部服务器错误?

c - 对 ncurses 库中函数的 undefined reference

c++ - 何时为可执行文件分配内核版本

java - 在 Java 中使用 ProcessBuilder 运行流水线命令

perl - perl 中的局部变量和全局变量

perl - 如何在Perl中检测递归程序包调用?

linux - 具有局部和静态变量的动态库

python - 如何有效地分配预定义大小的文件并使用 Python 将其填充为非零值?