Я пытаюсь выяснить способ определения самого последнего файла, созданного в каталоге. Я не могу использовать модуль, и я нахожусь в ОС Linux.
просто простой Google дал мне хороший ответ
@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, пока не найдете интересные файлы.
Нет, вы не можете получить файлы по дате их рождения, так как их нет команды linux, чтобы получить дату рождения файла, но, конечно же, вы можете получить доступ, изменить и изменить информацию о файле. Чтобы получить информацию о доступе, изменении и изменении времени для любого файла, используйте это:
stat file-name
Кроме того, чтобы получить последний измененный/измененный файл, используйте это:
ls -ltr | tail -1
Пытаться:
cd DIR
ls -l -rt | tail -1
Непослушный 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);