我有一个包含脚本的文件夹,其名称模式为 UPDATE[x.y.z]
,其中 x.y.z
是脚本的版本。
我需要的是一个 bash 脚本,它运行按版本排序的脚本,因此按字母顺序排序不好。
例如,UPDATE1.11.0
应该在UPDATE1.2.3
之后执行。
是否有一个比较器可以用来指示排序顺序?如果不行,还能怎么办?
最佳答案
如果您没有 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 ~]$
这会错过主要版本号,因为它不是由点分隔的。但无论如何它可能对你有用。
关于bash - 文件名的数字排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10998218/