2012-06-12 6 views
2

У меня есть папка со сценариями с шаблоном имен UPDATE[x.y.z], где x.y.z - это версия скрипта.Числовые типы имен файлов

Что мне нужно, это скрипт bash, который запускает скрипты, упорядоченные по их версии, поэтому алфавитный вид не очень хорош.

Например, UPDATE1.11.0 должен быть выполнен после UPDATE1.2.3.

Есть ли компаратор, который я могу использовать для того, чтобы диктовать этот порядок сортировки? если нет, как еще это можно сделать?

ответ

1

И если у вас нет сорта GNU (т. Е. Вы находитесь в OSX или FreeBSD или NetBSD), вы можете подделать его, отсортировав разные поля.

[ghoti ~]$ printf "foo1.2.3\nfoo1.11.0\nfoo1.4.1\nfoo1.4.0\n" | sort -nt. -k2,3 
foo1.2.3 
foo1.4.0 
foo1.4.1 
foo1.11.0 
[ghoti ~]$ 

Это пропустит номер главной версии, потому что это не разграничивается точкой. Но это может сработать для вас.

1

Если у вас есть GNU sort или другая версия, которая его поддерживает, вы можете использовать сортировку версий.

sort -V 

или

sort --version-sort 

Кроме того, в my answer here, я отправил сценарий, который сравнивает версии.

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