Получить список дат последних модификаций файлов в папке

Собственно сабж. Опыта с Perl нет никакого. Нужно получить массив с датами последних модификаций всех файлов в конкретной папке. Пока пробую использовать нативные команды ОС и парсить результат, но это видится как костыль.


Ответы (1 шт):

Автор решения: nörbörnën

Чтобы искать File::Find

Чтобы определить является ли найденное обычным файлом -f

Чтобы вычислить дату модификации stat

#!/usr/local/bin/perl -w
use strict;
use File::Find;
use Data::Dumper qw/Dumper/;

my $d = $ARGV[0] || '.';
my @paths;
find(sub { push @paths, $File::Find::name }, $d);

my @files;
foreach my $f (@paths) {
  if (-f $f) {
    my @f_stat = stat($f);
    push @files, { file => $f, mtime => $f_stat[9] };
  }
}

print Dumper @files;

Результат:

$ perl src/file-stat-1/index.pl ./src

...
$VAR267 = {
            'mtime' => 1620653004,
            'file' => './src/oracle-2/typeorm.ts'
          };
$VAR268 = {
            'mtime' => 1620653008,
            'file' => './src/oracle-2/oracledb.js'
          };
$VAR269 = {
            'mtime' => 1620653011,
            'file' => './src/oracle-2/knex.js'
          };
$VAR270 = {
            'file' => './src/express-1024-bytes/index.js',
            'mtime' => 1624648857
          };

Другие варианты поиска файлов можно почитать тут.

→ Ссылка