“目录/ *中的f”的默认顺序是什么?

我想知道如果迭代目录中的文件

for f in directory/* 

会有一些处理条目(文件名,创builddate等)的默认顺序,还是不确定的?

这可能很明显,但我找不到这些信息。

订单将按字典顺序(按字母顺序排列)。 如果在Bash shell提示符下键入ls directory/* ,它将与您所看到的完全一样。

如果要按修改时间sorting,可以使用ls -t 。 请参阅其他sorting选项。

directory/*由shell首先扩展(通常为bash)。 运行echo directory/*会回显所有匹配的文件,bash会先按照字典顺序对这些匹配的元素进行sorting,然后再将它们作为parameter passing给echo ,然后将其打印出来。

在运行ls directory/*的情况下, directory/*首先由shell展开,然后作为ls的参数列表呈现。 然后用于输出文件的顺序取决于提供给它的可选参数,这些参数允许根据备选条件(如大小,时间修改等)输出文件列表,但是这种sorting是在ls二进制文件内部完成的,它已经通过了bash shell的字典顺序扩展参数列表。