2012-06-12 2 views
2

UPDATE[x.y.z]의 이름 패턴을 가진 스크립트가있는 폴더가 있습니다. 여기서 x.y.z은 스크립트의 버전입니다.파일 이름의 숫자 정렬

내가 필요로하는 스크립트는 버전별로 정렬 된 스크립트를 실행하므로 영문자 정렬이 좋지 않습니다.

예를 들어 UPDATE1.11.0UPDATE1.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에, 나는 버전을 비교하는 스크립트를 기록했다.