У меня есть следующие файлы.
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