find $HOME -type f -print0 | perl -0 -wn -e '@f=; foreach $file (@f){ (@el)=(stat($file)); push @el, $file; push @files,[ @el ];} @o=sort{$a->[9]$b->[9]} @files; for $i (0..$#o){print scalar localtime($o[$i][9]), "\t$o[$i][-1]\n";}'|tail
Команда «find» используется для поиска файлов и каталогов в файловой системе. В данном случае, команда «find» выполняет поиск файлов в домашней директории (обозначенной как $home) и выводит результат в формате, понятном для команды «perl», с использованием опции «-print0».
Команда «perl» является интерпретатором языка программирования Perl, который выполняет скрипт, переданный ему в виде строки через опцию «-e».
Скрипт, переданный команде «perl», выполняет следующие действия:
1. Читает список файлов, полученных от команды «find», и сохраняет их в массив «@f».
2. Для каждого файла в массиве «@f» получает информацию о его статусе с помощью функции «stat()» и сохраняет ее в массиве «@el».
3. Добавляет имя файла в конец массива «@el».
4. Собирает все такие массивы «@el» в один массив «@files».
5. Сортирует массив «@files» по значению времени последнего изменения файла.
6. Для каждого элемента в отсортированном массиве «@files» выводит локальное время последнего изменения файла и его имя.
Команда «tail» используется для вывода последних строк из переданного ей входного потока. В данном случае, она применяется к выводу команды «perl» для отображения только последних строк списка файлов.
Альтернативой данной команде может быть использование команды «ls» с опцией сортировки по времени последнего изменения файла («-t»), но это требует более сложной конструкции команды и она не будет такой гибкой, как комбинация «find» и «perl».