【问题标题】:Linux sort folders by numerical valueLinux按数值排序文件夹
【发布时间】:2015-05-22 18:15:50
【问题描述】:

我们有一个来自

的数据集
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

有谁知道我怎样才能让这些按数值正确排序?

【问题讨论】:

    标签: linux bash sorting grep numeric


    【解决方案1】:

    使用ls-v开关:

    ls -v
    

    man ls 说:

    -v 文本中(版本)数字的自然排序

    【讨论】:

    • 我觉得自己像个白痴。感谢您提供简单的解决方案!我的解决方案是:'|排序-t。 -k1,1nr -k 2,2nr -k 3,3nr´
    【解决方案2】:

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

    这是一个例子

    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
    

    【讨论】:

      猜你喜欢
      • 2019-10-28
      • 1970-01-01
      • 2013-03-30
      • 2012-11-07
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      相关资源
      最近更新 更多