Bash - 将路径更改为版本号最高的文件夹
Bash - change path to the folder with the highest version number
我有以下文件夹结构
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
或 MyPackage-2.1
)?
借助 GNU 排序,您可以执行以下操作:
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
我有以下文件夹结构
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
或 MyPackage-2.1
)?
借助 GNU 排序,您可以执行以下操作:
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