Вы не указываете оболочку, поэтому я советую вам использовать Zsh:
ls /path/to/*(.om[1])
Вот пример с пятью файлами, которые были созданы в одну и ту же минуту (имена файлов в форме HHMMSS.txt
):
> ls tmp/378142
total 0
drwxr-xr-x 7 johnsyweb staff 238 14 Jan 08:23 ./
drwx------ 24 johnsyweb staff 816 14 Jan 08:20 ../
-rw-r--r-- 1 johnsyweb staff 0 14 Jan 08:22 082237.txt
-rw-r--r-- 1 johnsyweb staff 0 14 Jan 08:22 082238.txt
-rw-r--r-- 1 johnsyweb staff 0 14 Jan 08:22 082239.txt
-rw-r--r-- 1 johnsyweb staff 0 14 Jan 08:22 082240.txt
-rw-r--r-- 1 johnsyweb staff 0 14 Jan 08:22 082241.txt
Используя echo
:
> echo tmp/378142/*(.om[1])
tmp/378142/082241.txt
Используя ls
:
> ls -laF tmp/378142/*(.om[1])
-rw-r--r-- 1 johnsyweb staff 0 14 Jan 08:22 tmp/378142/082241.txt
Объяснение:
Это использует расширение имени файла Zsh.
Звездочка распространяется на все элементы в каталоге:
> echo tmp/378142/*
tmp/378142/082237.txt tmp/378142/082238.txt tmp/378142/082239.txt tmp/378142/082240.txt tmp/378142/082241.txt
Модифицируя это с .
, означает все обычные файлы (без каталогов или символических ссылок). Это известно как глобальный флаг:
> echo tmp/378142/*(.)
tmp/378142/082237.txt tmp/378142/082238.txt tmp/378142/082239.txt tmp/378142/082240.txt tmp/378142/082241.txt
o
задает порядок сортировки, on
это по имени:
> echo tmp/378142/*(.on)
tmp/378142/082237.txt tmp/378142/082238.txt tmp/378142/082239.txt tmp/378142/082240.txt tmp/378142/082241.txt
om
сортирует по измененному времени (Om
) в обратном порядке:
> echo tmp/378142/*(.om)
tmp/378142/082241.txt tmp/378142/082240.txt tmp/378142/082239.txt tmp/378142/082238.txt tmp/378142/082237.txt
[1]
выбирает первый элемент в списке:
> echo tmp/378142/*(.om[1])
tmp/378142/082241.txt