Unix 实现ls'的便携方式-v标志(即按版本排序)?
我正在开发一些构建脚本,我只希望依赖于标准化的特性。 我需要按版本对一些文件进行排序。假设文件是bar-1.{0,2,3}bar-11.{0,2,3} 默认情况下,ls为我提供: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
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'选项,但它强制未经编辑的非图形字符打印。