1

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

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

等等

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

4

2 回答 2

1

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

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

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

于 2012-08-16T15:21:21.287 回答
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
于 2012-08-16T15:50:44.420 回答