首页 > 解决方案 > 仅打印最近的文件

问题描述

我只想打印目录中最近的文件。

我的脚本:

#!/usr/bin/perl
#use strict;
#use warnings;

@files = <'/mnt/SESSIONS*'>;
foreach $file (@files) {
  print $file . "\n";
} 

输出:

/mnt/SESSIONS2018-12-18_14_00.log
/mnt/SESSIONS2018-12-18_14_15.log
/mnt/SESSIONS2018-12-18_14_30.log
/mnt/SESSIONS2018-12-18_14_45.log
/mnt/SESSIONS2018-12-18_15_00.log

我只想要最近的文件名,即/mnt/SESSIONS2018-12-18_15_00.log.

你有想法吗?

标签: perl

解决方案


评论中的先前建议将您引向 -M 运算符/函数,它返回(定义)文件的修改时间 - 假设文件仅在使用时被修改,而不是在那之后不再更改。

您陈述问题的方式表明您想要以最新名称命名的文件 - 这样可以更快地使用您已经在内存中拥有的信息,即名称本身。

my ($latest) = sort { $b cmp $a } @files;
print "$latest\n";

提到的以及您可能想进一步阅读的内容是:


推荐阅读