ls无法以所需的方式订购文件

时间:2012-08-16 15:03:51

标签: sorting ls

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

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

如何按逻辑顺序1,2,3等对文件进行排序

2 个答案:

答案 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