我正在开发一些构建脚本,我只想依赖于标准化功能。 我需要按版本排序一些文件。假设文件是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' is not standard。标准sort似乎也缺少我想要的选项,不过我可以查看旧版本的规格。
任何人都可以建议一种可移植的方式来实现这种效果,而不是编写我自己的排序例程吗?
谢谢, 里斯
答案 0 :(得分:5)
sort -n -t- -k2
似乎做你想做的事。 -n
为您提供数字(即非字母)排序; -t-
将字段分隔符设置为-
,-k2
选择第二个字段,即版本号。
我的sort
,在Ubuntu上,甚至可以正确地使用下划线,但我不确定这是否是标准的。可以肯定的是,您可以先按次要版本排序,然后按主要版本排序。