Попробуйте это:
ls -tu | grep -e '^access-[0-9]\{3\}\.log$' | awk '{print $NF}'
Использование оболочки zsh
:
setopt EXTENDED_GLOB
print /var/run/log/access-[[:digit:]](#c3).log(.oa[1])
Здесь [[:digit:]](#c3)
будет соответствовать ровно трем цифрам. После этого в имени должна встречаться строка .log
. Точка в (.oa[1])
определяет шаблон подстановки, так что сопоставляются только обычные файлы, а oa
сортирует их в порядке убывания atime
. [1]
возвращает только первое совпадающее имя (, к которому последний раз обращались ). Утилита print
напечатает полученный путь.
Измените print
на basename
, чтобы выводить только имя файла без пути.
Если это домашнее задание и вы должны написать bash
сценарий:
#!/bin/bash
zsh -o extended_glob -c 'print /var/run/log/access-[[:digit:]](#c3).log(.oa[1])'