我有一些像这样命名的文件:
S241R39.txt
S241R40.txt
S241R41.1.txt
S241R41.2.txt
S241R42.1.txt
S241R42.2.txt
我希望能够按此顺序对它们进行排序:
S241R39.txt
S241R40.txt
S241R41.1.txt
S241R42.1.txt
S241R41.2.txt
S241R42.2.txt
在此,我希望41.1
来42.1
,42.1
来41.2
在未以.1
或.2
结尾的文件中,这会对我的文件进行正确排序:
ls -1 *.txt | sort -V
有没有人对我如何调整它以给我所需的输出有任何建议?
答案 0 :(得分:6)
您可以使用sort -t . -k2n -k1n
:
printf '%s\n' *.txt | sort -t . -k2n -k1V
S241R39.txt
S241R40.txt
S241R41.1.txt
S241R42.1.txt
S241R41.2.txt
S241R42.2.txt
正在使用的 sort
命令是:
-t .
:将点设为字段分隔符-k2n -k1V
:使用按字段排序2(数字),字段1(版本)