Портативный способ достижения флага ls' -v (т.е.сортировать по версии)?

StackOverflow https://stackoverflow.com/questions/1481824

Вопрос

Я работаю над некоторыми сценариями сборки, в которых я хотел бы использовать только стандартизированные функции.Мне нужно отсортировать некоторые файлы по версии.Допустим, файлы имеют вид 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 даже часть с подчеркиванием работает правильно, но я не уверен, что это стандартно.Конечно, вы можете сначала отсортировать по второстепенной версии, а затем по основной версии.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top