bash - 如何比较目录名称并输入最高版本的目录名称

标签 bash

我在同一个子目录中有两个版本的 tcpdump。

tcpdump-4.1.1 和 tcpdump-4.3.0

如何编写 bash 函数来返回最高版本?

编辑:

我现在已经可以使用了。这是代码。

#!/bin/bash
# Function to get the latest version of the directory
function getLatestDirVer {
    latestDIR=$(ls -v $1* | tail -n 1)
    stringLen=`expr length "$latestDIR"`
    stringLen=$(($stringLen-1))
    latestDIR2=`expr substr $latestDIR 1 $stringLen`
    echo $latestDIR2
}

# Main function
echo $(getLatestDirVer tcpdump)

这是输出

[luke@machine Desktop]$ ./latestDIRversion.sh 
tcpdump-4.3.0

tcpdump-4.1.1 和 tcpdump-4.3.0 目录位于 Desktop 目录中。

最佳答案

这是使用ls的一种方法。您可以使用 -v 标志按文件名中的版本号从低到高排序:

ls -v tcpdump* | tail -n 1

编辑:

事实证明,我完全误解了你的问题。我以为您对文件名感兴趣,但实际上您对目录感兴趣。您可以将以下内容添加到您的 ~/.bashrc 中,我认为它适合您:

getLatestDirVer () {
    for i in $(find ./* -type d | sort --version-sort); do :;done
    cd "$i"
}

关于bash - 如何比较目录名称并输入最高版本的目录名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12857637/

相关文章:

bash - 是否可以将 linux 管道中的值放入 curl 查询字符串参数中?

linux - 如果在反引号中为变量分配命令表达式会发生什么

regex - 当我尝试提取正则表达式的一部分时,为什么 sed 会失败?

bash - awk 格式化打印

bash/sh 嵌套转义序列

bash - awk 和 bash 脚本?

bash - 如何使 jq 将参数视为数字而不是字符串?

linux - 如何使用 Unix/Linux 命令计算韩文字 block ?

bash - 搜索多个模式,其中包括单个文件中的双引号和两行上下的评论

linux - 当数据由 | 分隔时,使用 uniq 实用程序从列表中获取唯一值