2

我在同一个子目录中有两个版本的 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 目录中。

4

2 回答 2

2
ls -1 tcpdump*|sort -rn|head -1
于 2012-10-12T11:25:46.457 回答
2

这是使用ls. 您可以使用该-v标志按文件名中的版本号从最低到最高排序:

ls -v tcpdump* | tail -n 1

编辑:

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

getLatestDirVer () {
    for i in $(find ./* -type d | sort --version-sort); do :;done
    cd "$i"
}
于 2012-10-12T12:14:57.907 回答