Ordem dos arquivos correspondidos por um glob

1

Suponha que eu tenha os seguintes arquivos em uma pasta

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

Se eu combinar esses arquivos por um glob para processá-los, por exemplo,

for f in *;do echo $f;done

então Bash irá combiná-los - de acordo com a página do manual - em ordem alfabética.

Existe, no entanto, um padrão POSIX que define a ordem correspondente de globs? Dessa forma, eu poderia confiar em uma certa ordem de correspondência em qualquer shell, desde que seja compatível com POSIX.

    
por nautical 25.08.2016 / 20:07

1 resposta

1

Sim, o pedido é exigido pelo POSIX. Da especificação POSIX :

If the pattern matches any existing filenames or pathnames, the pattern shall be replaced with those filenames and pathnames, sorted according to the collating sequence in effect in the current locale. [Emphasis added]

Para ter certeza de resultados consistentes, deve-se especificar uma localidade. Para programação, a configuração LC_COLLATE=C é uma escolha comum.

    
por 25.08.2016 / 20:23