Linux按数值排序文件夹

时间:2015-03-19 14:55:30

标签: linux bash sorting grep numeric

我们有一个

的数据集
ls -1 /opt/test/kortinfo/
1.0.0
1.0.1
1.0.2
1.1.0
1.10.0            // Error
1.2.0
1.3.0
1.4.0
1.5.0
1.5.1
1.5.2
1.6.0
1.7.0
1.8.0
1.8.1
1.9.0

正如我们在此处所见,1.10.0文件夹错位,因为它大于1.9.0

我们尝试通过sort -gsort -nsort -ng进行管道处理,但两者都无法正确显示按其数字值排序的文件夹。

ls -1 /opt/test/kortinfo/ | grep -v "siste" | sort -ng
1.0.0
1.0.1
1.0.2
1.1.0
1.10.0            // Still the same error
1.2.0
1.3.0
1.4.0
1.5.0
1.5.1
1.5.2
1.6.0
1.7.0
1.8.0
1.8.1
1.9.0

有谁知道如何通过数值正确排序这些?

2 个答案:

答案 0 :(得分:5)

使用-v的{​​{1}}开关:

ls

ls -v 说:

  

-v文本中的自然类型(版本)数字

答案 1 :(得分:0)

作为参考,如果适用,还可以使用大括号扩展填充版本号来解决此问题。

这是一个例子

touch 1.{01..10}.{01..05}

这将创建具有版本表示的适当填充的版本,并显着简化您的生活。

结果:

mace-windu:useme [ ~/Desktop/1 ] ls -1
1.01.01
1.01.02
1.01.03
1.01.04
1.01.05
1.02.01
1.02.02
1.02.03
1.02.04
1.02.05
1.03.01
1.03.02
1.03.03
1.03.04
1.03.05
1.04.01
1.04.02
1.04.03
1.04.04
1.04.05
1.05.01
1.05.02
1.05.03
1.05.04
1.05.05
1.06.01
1.06.02
1.06.03
1.06.04
1.06.05
1.07.01
1.07.02
1.07.03
1.07.04
1.07.05
1.08.01
1.08.02
1.08.03
1.08.04
1.08.05
1.09.01
1.09.02
1.09.03
1.09.04
1.09.05
1.10.01
1.10.02
1.10.03
1.10.04
1.10.05