找到最近修改过的文件夹

时间:2015-09-16 07:18:03

标签: perl

$some_folder将始终位于~/foo/bar/$some_folder将永远是~/foo/bar/中最近修改过的文件夹,但是,每个系统的名称永远不会相同。我该如何找到$some_folder

1 个答案:

答案 0 :(得分:0)

嗯,它被标记为perl,因此我假设您需要一些perl代码。但正如评论中Chankey Pathak所述:

ls -1dt */ | head -n 1

会做的伎俩。

perl中,您需要statglob,可能需要sort

#!/usr/bin/env perl

use strict;
use warnings;

my %files_by_mtime;

foreach my $file ( glob ( "~/foo/bar/*" ) ) {
   next unless -d $file;
   my ( $mtime ) = (stat($file))[9];
   $files_by_mtime{$file} = $mtime; 
}

foreach my $filename (  sort { $files_by_mtime{$b} <=> $files_by_mtime{$a} } keys %files_by_mtime ) {
   print "$filename  $files_by_mtime{$filename }\n";
}

按照mtime生成有序列表。

为了简化这一点 - 您只需访问元素零:

print "".(  sort { $files_by_mtime{$b} <=> $files_by_mtime{$a} } keys %files_by_mtime )[0],"\n";

或简化为一个班轮:

perl -e '%f = map { -d ? $_ => (stat)[9] : () } glob("~/foo/bar/*");print "" . ( sort { $f{$b} <=> $f{$a} } keys %f )[0];