Портативный способ достижения флага ls' -v (т.е.сортировать по версии)?
Вопрос
Я работаю над некоторыми сценариями сборки, в которых я хотел бы использовать только стандартизированные функции.Мне нужно отсортировать некоторые файлы по версии.Допустим, файлы имеют вид bar-1.{0,2,3} bar-11.{0,2,3}.
По умолчанию ls дает мне:
bar-1_0
bar-11_0
bar-11_2
bar-11_3
bar-1_2
bar-1_3
Получить то, что я хочу, легко, используя «ls -v»:
bar-1_0
bar-1_2
bar-1_3
bar-11_0
bar-11_2
bar-11_3
Проблема в том, что 'ls -v' не является стандартным.Стандартный Сортировать также, похоже, не хватает нужной мне опции, хотя я мог бы посмотреть старые версии спецификаций.
Может ли кто-нибудь предложить портативный способ добиться этого эффекта, не написав собственную процедуру сортировки?
Спасибо, Рис
Решение
sort -n -t- -k2
кажется, делает то, что вы хотите. -n
дает вам числовое значение (т.е.не алфавитная) сортировка; -t-
устанавливает разделитель полей на -
, и -k2
выбирает второе поле, т.е.номер версии.
Мой sort
, в Ubuntu даже часть с подчеркиванием работает правильно, но я не уверен, что это стандартно.Конечно, вы можете сначала отсортировать по второстепенной версии, а затем по основной версии.