2

同じサブディレクトリに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ディレクトリはデスクトップディレクトリにあります。

4

2 に答える 2

2

を使用する 1 つの方法を次に示し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 に答える
2
ls -1 tcpdump*|sort -rn|head -1
于 2012-10-12T11:25:46.457 に答える