Порядок файлов, сопоставленных глобусом

Предположим, у меня есть следующие файлы в папке

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 это общий выбор.

Другие вопросы по тегам