如何确定linux机器上目录中最新创建的文件?

时间:2014-07-23 11:58:43

标签: linux perl

我试图找出一种方法来确定目录中创建的最新文件。我不能使用模块而且我在Linux操作系统上。

4 个答案:

答案 0 :(得分:2)

不,你不能根据他们的出生日期获取文件,因为他们没有linux命令来获取文件的出生日期,但当然你可以获得有关文件的访问,修改和更改信息。要获取任何文件的访问,修改和更改时间信息,请使用:

stat file-name

另外,要获取最新更改/修改的文件,请使用以下命令:

ls -ltr | tail -1

答案 1 :(得分:2)

只是一个简单的谷歌给了我很好的答案

@list = `ls -t`;
$newest = $list[0];

或完全在perl

opendir(my $DH, $DIR) or die "Error opening $DIR: $!";
my %files = map { $_ => (stat("$DIR/$_"))[9] } grep(! /^\.\.?$/, readdir($DH));
closedir($DH);
my @sorted_files = sort { $files{$b} <=> $files{$a} } (keys %files);

$ sorted_files [0]是最近修改过的。如果不是实际的话 感兴趣的文件,您可以遍历@sorted_files直到找到 有趣的文件。

答案 2 :(得分:1)

尝试:

cd DIR
ls -l -rt | tail -1

答案 3 :(得分:0)

顽皮的IO::All方法:;-)

use IO::All; 
use v5.20;

# sort files by their modification time and store in an array:
my @files = sort{$b->mtime <=> $a->mtime} io(".")->all_files; 
# get the first/newest file from the sort: 
say "$files[0] ". ~~localtime($files[0]->mtime);