Порядок файлов, сопоставленных глобусом
Предположим, у меня есть следующие файлы в папке
1.txt
2.txt
a.txt
b.txt
c.txt
Если я сопоставлю эти файлы глобусом, чтобы обработать их, например,
for f in *;do echo $f;done
затем Bash
будет соответствовать им - согласно справочной странице - в алфавитном порядке.
Однако существует ли стандарт POSIX, определяющий порядок сопоставления глобусов? Таким образом, я мог бы положиться на определенный порядок сопоставления в любой оболочке, если он соответствует POSIX.
1 ответ
Да, заказ требуется POSIX. Из спецификации POSIX:
Если шаблон соответствует каким-либо существующим именам файлов или путям, шаблон должен быть заменен этими именами файлов и путями, отсортированными в соответствии с последовательностью сортировки, действующей в текущей локали. [Акцент добавлен]
Чтобы быть уверенным в последовательных результатах, нужно указать локаль. Для программирования, настройки LC_COLLATE=C
это общий выбор.