Порядок файлов, совпадающих с глобусом

300
nautical

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

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

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

for f in *;do echo $f;done 

затем Bashсопоставим их - в соответствии с man-страницей - в алфавитном порядке.

Однако существует ли стандарт POSIX, определяющий порядок сопоставления глобусов? Таким образом, я мог бы положиться на определенный порядок сопоставления в любой оболочке, если он соответствует POSIX.

1

1 ответ на вопрос

1
John1024

Да, заказ требуется POSIX. Из спецификации POSIX :

Если шаблон соответствует каким-либо существующим именам файлов или путям, шаблон должен быть заменен этими именами файлов и путями, отсортированными в соответствии с последовательностью сортировки, действующей в текущей локали. [Акцент добавлен]

Чтобы быть уверенным в последовательных результатах, нужно указать локаль. Для программирования настройка LC_COLLATE=Cявляется обычным выбором.

LC_ALL = C - не очень хороший выбор, поскольку он переводит все остальное в режим ASCII. Если вам нужен только порядок сортировки, установите вместо него LC_COLLATE. grawity 7 лет назад 0
@ grawity Да, COLLATE лучше. Ответ обновлен. John1024 7 лет назад 0

Похожие вопросы