我在同一个子目录中有两个版本的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 目录位于桌面目录中。
这是使用 ls
的一种方法。您可以使用 -v
标志按文件名从低到高的版本号进行排序:
ls -v tcpdump* | tail -n 1
编辑:
所以事实证明,我完全误读了你的问题。我以为你对文件名感兴趣,但实际上你对目录感兴趣。您可以将以下内容添加到您的~/.bashrc
中,我认为它会对您有用:
getLatestDirVer () {
for i in $(find ./* -type d | sort --version-sort); do :;done
cd "$i"
}
ls -1 tcpdump*|sort -rn|head -1