В zsh
вы можете получить отсортированный список csv
с помощью:
list=(*.csv(oe'<REPLY=${(j::)${(s:.:Oa)REPLY}}>'))
А затем последний находится в$list[-1]
*.csv(glob-qualifier)
:глобус с квалификаторами глобус oe'<code>'
:o
упорядочить список на основе e
оценки code
(, где код устанавливает переменную $REPLY
в качестве основы для сортировки)${(s:.:Oa)REPLY}
:s
разделить $REPLY
переменную (, содержащую имя файла для рассмотрения )на точку, и перевернуть O
порядок на a
индекс массива (перевернуть список )${(j::)list}
:соединить элементы списка. Таким образом, если $REPLY
изначально был InStockDaily10.07.19.csv
, новый $REPLY
, по которому будет сортироваться глобус, будет csv1907InStockDaily10
. Это предполагает, что префикс всегда такой же, как в вашем примере. Если нет, вы можете использовать:
list=(*.csv(oe'<REPLY=${(j::)${(Oas:.:M)REPLY%??.??.??.*}}>'))
Где %pattern
в сочетании с флагом расширения параметра M
извлекает суффикс M
, присоединяющий шаблон к концу $REPLY
(, поэтому $REPLY
будет csv190710
вместоcsv1907InStockDaily10
).