加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – UNIX:按编号/版本排序文件,不带0填充

发布时间:2020-12-15 22:03:57 所属栏目:安全 来源:网络整理
导读:最终,我想将最新版本设置为环境变量,因此补充所选答案(这为我提供了正确的排序): export LATEST_VERSION=$(printf '%sn' * | sort -rV | head -1) 我有一个目录,其中包含以下目录名称: ls -1r .2.01.816.116.015.515.014.514.114.01.31.21.1.51.1.31.1.2
最终,我想将最新版本设置为环境变量,因此补充所选答案(这为我提供了正确的排序):

export LATEST_VERSION=$(printf '%sn' * | sort -rV | head -1)

我有一个目录,其中包含以下目录名称:

ls -1r .
2.0
1.8
16.1
16.0
15.5
15.0
14.5
14.1
14.0
1.3
1.2
1.1.5
1.1.3
1.1.2

我想对它们进行排序以获得最新版本:

ls -1r . | head -1
16.1

因此基础订单应如下所示:

16.1
16.0
15.5
15.0
14.5
14.1
14.0
2.0
1.8
1.3
1.2
1.1.5
1.1.3
1.1.2

任何帮助将不胜感激.越简单越好,但我对任何解决方案都持开放态度.谢谢!

解决方法

现代GNU排序提供-V标志,用于根据版本号规则进行排序:

$printf '%sn' * | sort -rV
16.1
16.0
15.5
15.0
14.5
14.1
14.0
2.0
1.8
1.3
1.2
1.1.5
1.1.3
1.1.2

注意,上面没有使用ls.作为一般规则,you shouldn’t parse the output of ls(1).

文档

从男人排序:

-V,–version-sort
natural sort of (version) numbers within text

以上内容来自GNU手册页.

FreeBSD’s sort还支持-V.

OSX

Apple的sort是从2005年开始的GNU排序,早于对-V选项的支持.可以在here找到解决方法.(帽子提示:l’L’l,mklement0)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读