我正在尝试对目录中的文件名进行排序,如下所示。
$ 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
- 按第四个字段数字排序