バージョン別にファイル名を並べ替える

バージョン別にファイル名を並べ替える

以下のようにディレクトリのファイル名をソートしようとしています。

$ ls -1v
file-1.10.0-114.1.1.x86.tb1_2.rpm  
file-1.10.0-114.2.2.x86.tb1_2.rpm  
file-1.10.0-114.11.2.x86.tb1_2.rpm  
file-1.10.0-114.x86.tb1_2.rpm  
file-1.10.0-115.1.1.x86.tb1_2.rpm  
file-1.10.0-115.2.2.x86.tb1_2.rpm  
file-1.10.0-115.3.1.x86.tb1_2.rpm  
file-1.10.0-115.22.1.x86.tb1_2.rpm  
file-1.10.0-115.x86.tb1_2.rpm  

しかし、私の期待は次のとおりです。

file-1.10.0-114.x86.tb1_2.rpm  
file-1.10.0-114.1.1.x86.tb1_2.rpm  
file-1.10.0-114.2.2.x86.tb1_2.rpm  
file-1.10.0-114.11.2.x86.tb1_2.rpm  
file-1.10.0-115.x86.tb1_2.rpm  
file-1.10.0-115.1.1.x86.tb1_2.rpm  
file-1.10.0-115.2.2.x86.tb1_2.rpm  
file-1.10.0-115.3.1.x86.tb1_2.rpm  
file-1.10.0-115.22.1.x86.tb1_2.rpm

試してみましたが、sort -V同じ結果が表示されます。どのようにソートする必要がありますか?

ベストアンサー1

次のコマンドを試してください。

ls -h | sort -t. -k3,3 -k4,4n

ls -h- lsコマンドの標準出力(ユーザーとグループ名にドットが含まれていない場合は、ls -lhを使用して同じ結果を得ることができます)

-t.- コマンドをソートするための区切り文字を設定します。

-k3,3- 3番目のフィールドでソート

今後...

-k4,4n- 4番目のフィールドに基づいて数値順にソート

おすすめ記事