用版本对文件名进行排序

kir*_*370 6 version sort

我正在尝试对目录中的文件名进行排序,如下所示。

$ 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  
Run Code Online (Sandbox Code Playgroud)

但是,我的期望如下。

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
Run Code Online (Sandbox Code Playgroud)

我试过了sort -V,但它显示了相同的结果。我如何以这种方式排序?

Ego*_*yev 12

尝试使用此命令:

ls -h | sort -t. -k3,3 -k4,4n
Run Code Online (Sandbox Code Playgroud)

ls -h - ls 命令的标准输出(如果用户名和组名不包含点,您可以使用 ls -lh 获得相同的结果);

-t. - 为排序命令设置分隔符;

-k3,3 - 按第三个字段排序

在这之后……

-k4,4n - 按第四个字段数字排序