Em que ordem um loop FOR IN do bash coleta arquivos em uma pasta?

Em que ordem um loop FOR IN do bash coleta arquivos em uma pasta?

Digamos que eu tenha um loop for abaixo:

for i in /apps/textfiles/*.txt
do
do something
done

Agora digamos que tenho 50 arquivos dentro/apps/arquivos de texto/

Em que ordem os arquivos serão selecionados?

Responder1

A expansão do nome do arquivo no Bash está classificandoalfabeticamente.

Do manual do Bash:

Bash verifica cada palavra em busca dos caracteres ' *', ' ?' e ' ['. Se um desses caracteres aparecer, então a palavra é considerada um padrão e substituída por uma lista ordenada alfabeticamente de nomes de arquivos que correspondem ao padrão [...].

Não faz diferença aqui que seu contexto global faça parte do forloop.

Observe quealfabéticoa classificação ainda obedece à ordem de agrupamento definida peloLC_COLLATEvariável:

LC_COLLATE

Esta variável determina a ordem de agrupamento usada ao classificar os resultados da expansão de nome de arquivo e determina o comportamento de expressões de intervalo, classes de equivalência e sequências de agrupamento na expansão de nome de arquivo e correspondência de padrões (consulte Expansão de nome de arquivo).

informação relacionada