Quando você faz for f in data/*
, a enumeração de nomes de arquivos está sendo feita pelo seu shell e não "ls". Normalmente, os shells classificarão lexicograficamente (o bash faz), mas eles podem usar sua ordem de seqüência de intercalação LC_COLLATE. Talvez sua concha em particular não seja ordenada.
As entradas de diretório geralmente não são classificadas, mas dependem do sistema de arquivos subjacente. Use ls -f
para listar um diretório sem classificação.
Quando você diz ls *
, primeiro o shell expande * e pode classificar o resultado, então ls ordenará os nomes dos arquivos novamente.