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'不是标准的.标准排序似乎也缺乏我想要的选项,尽管我可能会看到旧版本的规格.
任何人都可以建议一种可移植的方式来实现这种效果,而不是编写我自己的排序程
谢谢,里斯
sort -n -t- -k2似乎做你想要的.-n给你数字(即非字母)排序; -t-将字段分隔符设置为-,并-k2选择第二个字段,即版本号.
我的sort,在Ubuntu上,甚至正确地用下划线做部分,但我不确定这是否是标准的.可以肯定的是,您可以先按次要版本排序,然后按主要版本排序.