$some_folder
将始终位于~/foo/bar/
。 $some_folder
将永远是~/foo/bar/
中最近修改过的文件夹,但是,每个系统的名称永远不会相同。我该如何找到$some_folder
?
答案 0 :(得分:0)
嗯,它被标记为perl
,因此我假设您需要一些perl
代码。但正如评论中Chankey Pathak所述:
ls -1dt */ | head -n 1
会做的伎俩。
在perl
中,您需要stat
和glob
,可能需要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];