如何选择版本号最高的文件名?

Dav*_*uer 12 bash

我编写了一个构建脚本,希望能够在安装时选择最新版本的脚本,例如包名是package_X.XXtar.gz,并且有多个副本.

有没有办法将build命令指向package_Y.tar.gz?哪里Y = max(XXX)?

aio*_*obe 23

如果文件相同,除了版本号,你可以使用类似的东西

ls -v | tail -n 1
Run Code Online (Sandbox Code Playgroud)

从手册页ls:

...
-v     natural sort of (version) numbers within text
...
Run Code Online (Sandbox Code Playgroud)

用法示例:

$ ls
package_1.5.7.9.tar.gz  package_2.5.3.9.tar.gz  package_4.6.1.0.tar.gz
$ ls -v | tail -n 1
package_4.6.1.0.tar.gz
Run Code Online (Sandbox Code Playgroud)

  • 请记住,这仅在版本号之前的前缀相同的情况下才有效。 (2认同)
  • @WORMSS我创建了一个空目录,并在其中填充了 foo-<version> 文件并尝试了它。它按预期工作:1.10 是比 1.9 更高的版本号,并且文件会相应放置。它必须检查文件名中是否有看起来像版本号的内容,然后将此位视为版本号而不是一般字符串。 (2认同)