便携式方式实现ls'-v标志(即按版本排序)?

Rhy*_*ich 5 unix shell standards posix ls

我正在研究一些构建脚本,我只想依赖标准化功能.我需要按版本排序一些文件.假设文件是​​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
Run Code Online (Sandbox Code Playgroud)

使用'ls -v'可以轻松获得我想要的东西:

bar-1_0
bar-1_2
bar-1_3
bar-11_0
bar-11_2
bar-11_3
Run Code Online (Sandbox Code Playgroud)

问题是'ls -v'不是标准的.标准排序似乎也缺乏我想要的选项,尽管我可能会看到旧版本的规格.

任何人都可以建议一种可移植的方式来实现这种效果,而不是编写我自己的排序程

谢谢,里斯

Tho*_*mas 5

sort -n -t- -k2似乎做你想要的.-n给你数字(即非字母)排序; -t-将字段分隔符设置为-,并-k2选择第二个字段,即版本号.

我的sort,在Ubuntu上,甚至正确地用下划线做部分,但我不确定这是否是标准的.可以肯定的是,您可以先按次要版本排序,然后按主要版本排序.