n番目に若いファイルをリストする方法(lsを解析せずに!)

n番目に若いファイルをリストする方法(lsを解析せずに!)

だから私はlsを解析する悪い!

今日、私は次の塊を見つけました。

FILENAME=`ls -t $READ_FOLDER | head -1`

だから私はもともとこれが最新のファイル名を取得するように設計されていると思います。実際、今それを調整して、おそらく最新のファイル名を取得しようとしています。5番目の場所最新のファイルは確認するプロセスが少し遅いので処理が行われたかどうかはわかりません。

私はbashで作業していますが、sh-genericソリューションには反対しません。

ベストアンサー1

パースリー:

#!/usr/bin/env perl

use strict;
use warnings;

my %files_by_mtime;

foreach my $file ( glob ( "./*" ) ) {
   my ( $mtime ) = (stat($file))[9];
   $files_by_mtime{$file} = $mtime; 
}

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

次に縮小:

perl -e '%f = map { $_ => (stat)[9] } glob("./*");print "" . ( sort { $f{$b} <=> $f{$a} } keys %f )[4];'

Perl配列は0から始まるので、「N」番目のファイルは4です。

おすすめ記事