Shell – Найти последний файл, который соответствует заданному шаблону

У меня есть следующие файлы.

root@VMBOX:/client# ls -lrt /client/*/ver* /client/*/*/ver* -rw-r--r-- 1 root root 0 Jul 5 18:54 /client/folder299/version_1 -rw-r--r-- 1 root root 0 Jul 5 18:58 /client/ifolder299/ifolder/version_a -rw-r--r-- 1 root root 0 Jul 5 18:58 /client/ifolder300/ifolder1/version_b -rw-r--r-- 1 root root 0 Jul 5 18:58 /client/ifolder301/ifolder2/version_c -rw-r--r-- 1 root root 0 Jul 5 18:58 /client/ifolder302/ifolder3/version_d -rw-r--r-- 1 root root 0 Jul 19 13:35 /client/folder300/version_2 -rw-r--r-- 1 root root 0 Jul 19 13:35 /client/folder301/version_3 -rw-r--r-- 1 root root 0 Jul 19 13:36 /client/folder302/version_4 

Я пытаюсь получить файл последней версии для шаблона, соответствующего идентификатору. Пример показан ниже.

 root@VMBOX:/client# ls -lrt /client/*/ver* /client/*/*/ver* | grep 299 -rw-r--r-- 1 root root 0 Jul 5 18:54 /client/folder299/version_1 -rw-r--r-- 1 root root 0 Jul 5 18:58 /client/ifolder299/ifolder/version_a 

Последняя версия – version_a в приведенном выше примере.

 root@VMBOX:/client# ls -lrt /client/*/ver* /client/*/*/ver* | grep 299 | tail -1 -rw-r--r-- 1 root root 0 Jul 5 18:58 /client/ifolder299/ifolder/version_a 

Мне сказали, что этот подход не подходит для поиска файла ( почему * not * parse `ls`? ), И я ищу альтернативный путь, например https://stackoverflow.com/a/26766782/9316558 . Пожалуйста, дайте мне знать, если что-то не понятно.

Обновить:

Снизу ответ Jasen, я мог бы получить последний файл в пути / клиент

 find /client -path "*299*" -printf "%T@ %P\n" | sort -n | tail -1 

Но приведенная выше команда дает последний файл. Я ищу, чтобы найти последнюю версию файла.

Вы можете комбинировать поиск и сортировку

 find -path "some pattern" -printf "%T@ %P\n" | sort -n | tail -1