bash - Bash - 更改具有最高版本号的文件夹的路径
问题描述
我有以下文件夹结构
MyPackage
└── versions
└── MyPackage-1.0
└── src
MyPackage-1.0.1
└── src
MyPackage-2.0
└── src
我正在编写一个 bash 脚本来构建最新版本的包并检索构建工件。该步骤的一部分是更改到最新包的目录:
cd MyPackage/versions/MyPackage-2.0/src
我如何编写我的 bash 脚本,使其始终选择最高版本的子文件夹(所以在这种情况下MyPackage-2.0
,但在未来它可能变成MyPackage-2.0.1
or MyPackage-2.1
)?
解决方案
在 GNU sort 的帮助下,您可以执行以下操作:
cd "$(printf "%s"$'\n' MyPackage/versions/* | sort -Vr | head -n1)"
分解:
$ printf "%s"$'\n' MyPackage/versions/*
MyPackage/versions/MyPackage-1.0
MyPackage/versions/MyPackage-1.0.1
MyPackage/versions/MyPackage-2.0
$ printf "%s"$'\n' MyPackage/versions/* | sort -Vr
MyPackage/versions/MyPackage-2.0
MyPackage/versions/MyPackage-1.0.1
MyPackage/versions/MyPackage-1.0
$ printf "%s"$'\n' MyPackage/versions/* | sort -Vr | head -n1
MyPackage/versions/MyPackage-2.0
推荐阅读
- mysql - 用wordpress设置mysql
- python - 识别 HTTP 请求中的参数
- python - 注释掉“for”语句导致 'NoneType' 没有 len()
- vb.net - 带有响应的 HttpWebRequest
- android-studio - 任何修改后需要 CLEAN PROJECT 的未知错误
- sql - Amazon Redshift 中的递归 CTE
- amazon-web-services - 使用 S3 作为 AWS DMS 的目标:上传的文件名不会改变
- python-3.x - 如何从日期 x 到日期 y 获取推文
- ios - 这是在闭包中使用弱自我的正确位置吗?
- angular - 角2形式
未检测到更改事件