2009-09-26 3 views
4

Я работаю над некоторыми скриптами сборки, которые я бы хотел зависеть только от стандартных функций. Мне нужно отсортировать файлы по версии. Скажем, файлы имеют бар-1. {0,2,3} бар-11. {0,2,3}.Портативный способ достижения флага ls '-v (т. Е. Сортировки по версии)?

По умолчанию 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' is not standard. Стандарту sort также, кажется, не хватает возможности, которую я хочу, хотя я мог бы смотреть на старые версии спецификаций.

Может ли кто-нибудь предложить переносимый способ добиться этого эффекта, не написав мою собственную рутину?

Спасибо, Rhys

+0

Где находится 'ls -v' для сортировки по 'версии'? (GNU - ах, да!) MacOS X имеет параметр «-v», но он принудительно печатает неграфические символы. –

ответ

3

sort -n -t- -k2, кажется, делать то, что вы хотите. -n дает вам числовое (то есть не алфавитное) сорт; -t- устанавливает полевой разделитель на -, а -k2 выбирает второе поле, то есть номер версии.

В моем sort, на Ubuntu, даже часть с подчеркиванием правильно, но я не уверен, что это стандарт. Конечно, сначала вы можете сортировать по второстепенной версии, затем по основной версии.

 Смежные вопросы

  • Нет связанных вопросов^_^