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

Unix 实现ls'的便携方式-v标志(即按版本排序)?,unix,shell,standards,posix,ls,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 使用“ls-v”很容易得到我想要的: bar-1_0 bar-1_2 bar-1_3 bar-11_0 bar-11_2 bar-11_3 问题是。标准版似乎也缺少我想要的选项,尽管我可能会查看旧版本的规范 除了编

我正在开发一些构建脚本,我只希望依赖于标准化的特性。 我需要按版本对一些文件进行排序。假设文件是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
问题是。标准版似乎也缺少我想要的选项,尽管我可能会查看旧版本的规范

除了编写自己的排序例程之外,有人能提出一种实现这种效果的便携方法吗

谢谢,
Rhys

排序-n-t--k2
似乎可以做你想做的事<代码>-n提供数字(即非字母)排序
-t-
将字段分隔符设置为
-
,并且
-k2
选择第二个字段,即版本号


在Ubuntu上,我的
排序
,甚至正确地完成了带有下划线的部分,但我不确定这是否是标准的。当然,您可以先按次要版本排序,然后按主要版本排序。

哪里支持按“版本”排序的“ls-v”?(GNU-啊,是的!)MacOS X有一个'-v'选项,但它强制未经编辑的非图形字符打印。