我有一个脚本,用于创建带有输出_#.root的文件,其中#是一个数字。当我在目录中执行ls时,它选择以奇怪的方式对文件进行排序:
output_1.root
output_10.root
output_100.root
output_11.root
output_2.root
等
如何按逻辑顺序1,2,3等对文件进行排序
答案 0 :(得分:1)
您的文件按字母顺序排序。这是正常的行为。如果您想按数字顺序对它们进行排序,可以试试这个:
ls *.root | sort -k2 -t_ -n
这将使用_
作为分隔符拆分结果,并根据第二个字段-n
按数字顺序-k2
排序。
答案 1 :(得分:0)
如果您使用的是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