Aparentemente, eles usam localidades diferentes para a variável de ambiente LC_COLLATE, que define “[h] cadeias de caracteres (nomes de arquivos ...) são classificadas alfabeticamente” ( source ). Você pode exibir localidades disponíveis para o seu sistema com locale -a
. O exemplo a seguir mostra como você pode alterar a configuração de apenas um comando (o arquivo test
tem seus quatro nomes de arquivos de exemplo), minha abordagem seria brincar com isso e definir aliases como alias sort="LC_COLLATE=C sort"
, se necessário:
> sort test # my system standard is LC_COLLATE=de_DE.UTF-8
flop_drop.jpg
flop.jpg
flop_nop.jpg
flop_qrop.jpg
> LC_COLLATE=C sort test
flop.jpg
flop_drop.jpg
flop_nop.jpg
flop_qrop.jpg
Esta resposta a uma pergunta relacionada fornece uma boa visão geral das localidades, onde elas são definidas e como você pode mudar eles.
Nautilus, no entanto, aparentemente tem um bug …
Editar
find
parece ignorar uma configuração manual de LC_COLLATE:
> find . -name "flop*" # my system standard is LC_COLLATE=de_DE.UTF-8
./flop.jpg
./flop_drop.jpg
./flop_qrop.jpg
./flop_nop.jpg
> LC_COLLATE=de_DE.UTF-8 find . -name "flop*"
./flop.jpg
./flop_drop.jpg
./flop_qrop.jpg
./flop_nop.jpg
> LC_COLLATE=en_EN.UTF-8 find . -name "flop*"
./flop.jpg
./flop_drop.jpg
./flop_qrop.jpg
./flop_nop.jpg
Eu não tenho absolutamente nenhuma idéia de por que ele se comporta dessa maneira, particularmente porque manpage lista LC_COLLATE como usado pelo programa. Estou sem palavras aqui.