通过 glob 匹配的文件顺序

通过 glob 匹配的文件顺序

假设我的文件夹中有以下文件

1.txt
2.txt
a.txt
b.txt
c.txt

如果我通过 glob 匹配这些文件以便处理它们,例如

for f in *;do echo $f;done

然后Bash将根据手册页按字母顺序进行匹配。

但是,是否有一个 POSIX 标准来定义 glob 的匹配顺序?这样,我就可以在任何 shell 中依赖特定的匹配顺序,只要它符合 POSIX 标准。

答案1

是的,POSIX 要求排序。从POSIX 规范

如果模式与任何现有文件名或路径名匹配,则该模式将被替换为这些文件名和路径名,根据当前区域设置的排序顺序进行排序。[重点补充]

为了确保结果一致,应指定区域设置。对于编程来说,此设置LC_COLLATE=C是一种常见的选择。

相关内容