我正在编写一些我只想依赖标准化功能的构建脚本。
我需要按版本对一些文件进行排序。假设文件是 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似乎也缺少我想要的选项,尽管我可能正在查看旧版本的规范。
谁能建议一种可移植的方法来实现这种效果,而无需编写我自己的排序例程?
谢谢,
里斯
最佳答案
sort -n -t- -k2
似乎做你想做的。 -n
为您提供数字(即非字母)排序; -t-
将字段分隔符设置为 -
, 和 -k2
选择第二个字段,即版本号。
我的 sort
, 在 Ubuntu 上,甚至可以正确执行带有下划线的部分,但我不确定这是否是标准的。可以肯定的是,您可以先按次要版本排序,然后再按主要版本排序。
关于unix - 实现 ls' -v 标志的可移植方法(即按版本排序)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1481824/