当我有文件时a.txt
, b.txt
and c.txt
is it 保证 that
cat *.txt > all_files.txt
or
cat ?.txt > all_files.txt
会按字母顺序合并文件吗?
(在我所有的测试中,字母顺序都被保留,但我不确定,因为例如ls
顺序是未定义的,不需要按字母顺序 - 但通常是这样,因为文件通常按字母顺序写入目录)
不,这取决于locale。该顺序由区域设置中的排序规则决定,可以使用以下命令更改该顺序LC_COLLATE
or LC_ALL
环境变量。请注意,bash 在这方面的行为与其他一些 shell(例如 Korn shell)不同。
如果您的区域设置为C
or POSIX
那么它将按字符集顺序排列。否则,您可能只会注意到混合大小写字母的差异,例如en_ locales 的序列是 aAbBcC ... xXyYzZ。例如参见http://collation-charts.org/fc6/fc6.en_GB.iso885915.html.
可以使用列出可用的区域设置locale -a
.
编辑:另一个变量LANG
是可用的,但现在一般很少使用。根据单一 UNIX 规范,它的用法是:在缺少 LC_ALL 和其他 LC_* ... 环境变量的情况下.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)