【问题标题】:ls fails to order files in desired wayls 无法以所需的方式订购文件
【发布时间】:2012-08-16 15:03:50
【问题描述】:

我有一个脚本,它使用 output_#.root 创建文件,其中 # 是一个数字。当我在目录中执行 ls 时,它会选择以一种奇怪的方式对文件进行排序:

output_1.root
output_10.root
output_100.root
output_11.root
output_2.root

等等

如何使它按照逻辑顺序 1、2、3 等对文件进行排序。

【问题讨论】:

    标签: sorting ls


    【解决方案1】:

    您的文件按字母顺序排序。这是正常的行为。如果你想按数字顺序对它们进行排序,你可以试试这个:

    ls *.root | sort -k2 -t_ -n
    

    这将使用_ 作为分隔符拆分您的结果,并根据第二个字段-k2 按数字顺序-n 排序。

    【讨论】:

      【解决方案2】:

      如果您使用 GNU coreutils 中的 ls,您可以使用版本排序开关:

      ls -v
      

      创建示例文件:

      touch output_1.root output_10.root output_100.root output_11.root output_2.root
      

      列出它们:

      ls -1v
      

      输出:

      output_1.root
      output_2.root
      output_10.root
      output_11.root
      output_100.root
      

      【讨论】:

        猜你喜欢
        • 2012-07-17
        • 1970-01-01
        • 1970-01-01
        • 2015-08-16
        • 2018-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多