从目录中打开最后编辑的文件

时间:2014-11-27 19:17:51

标签: perl

我试图运行一个perl脚本,打开目录中最后编辑的文件。 我知道如何打开单个文件,如下面的示例,但不是最后一次编辑/home/test/

open(CONFIG_FILE,"/home/test/test.txt");
while (<CONFIG_FILE>){
}
close(CONFIG_FILE);

我该怎么做?

3 个答案:

答案 0 :(得分:4)

它从/home/test/读取所有文件并获取最新文件

my ($last_modified) = sort { -M $a <=> -M $b } grep -f, </home/test/*>;

检查perldoc -f -X

答案 1 :(得分:0)

尝试这样做:

chomp(my $file = qx(cd /home/test && ls -1t | sed q));

此解决方案通过评估shell命令来工作。 sed q是仅显示第一行的技巧 qx()执行shell命令并获取输出,请参阅perldoc qx

或者使用pure-perl:

use File::DirList;
my $files = File::DirList::list('/home/test', 'M');
my $file = $files->[0]->[13];

方法File::DirList::list('/home/test', 'M');返回按修改日期排序的数组,只需选取第一个数组即可。 13是文件名的关键。

请参阅perldoc File::DirList

答案 2 :(得分:0)

有一个如何读取目录in the documentation for the readdir function中文件的示例。

一旦你开始这样做,你将需要使用the stat function来检查每个文件的mtime,当你在readdir中查看它时。

所有其余的只是编程; - )

或者,您可以按日期排序ls中的最后一项:ls -tr | tail -1