3

当我有文件a.txtb.txtc.txt是否可以保证

cat *.txt > all_files.txt

或者

cat ?.txt > all_files.txt

将按字母顺序组合文件?

(在我所有的测试中,字母顺序都被保留了,但我不确定,因为例如ls顺序是未定义的,不需要是字母顺序 - 但通常是,因为文件经常按字母顺序写入目录)

4

1 回答 1

5

不,这取决于locale。顺序由语言环境中的排序顺序决定,可以使用LC_COLLATELC_ALL环境变量进行更改。请注意,bash 在这方面的行为与其他一些 shell(例如 Korn shell)不同。

如果您的语言环境设置为Cor ,POSIX那么它将按字符集顺序排列。否则,您可能只会注意到混合大小写字母的不同,例如 en_ locales 的序列是 aAbBcC ... xXyYzZ。例如参见http://collat​​ion-charts.org/fc6/fc6.en_GB.iso885915.html

可用的语言环境可以使用 列出locale -a

编辑:另一个变量LANG是可用的,但现在它通常不常用。根据 Single UNIX Specification 它的使用:在没有 LC_ALL 和其他 LC_* ... 环境变量的情况下

于 2015-05-26T14:34:23.040 回答