Se você não puder obter ls para ordenar da maneira que quiser, tente a expansão do shell.
Você pode usar padrões de nome de arquivo para executar ls com uma lista de arquivos que o shell já classificou, ignorando o método que ls usa.
ls -lf _* [!_]*
Supondo que você tenha os arquivos
_a a _b b _c c
isto é como correr
ls -lf _a _b _c a b c
Explicação:
_* é um padrão de shell que corresponde a qualquer nome de arquivo que comece com um sublinhado, expandido em ordem alfabética.
[!_]* corresponde a qualquer nome de arquivo não começando com um sublinhado, expandido em ordem alfabética.
-f diz ls para não , porque o shell já o fez.
Mais informações: expansão do nome de arquivo bash
Se houver diretórios no diretório atual, você irá querer executar o comando como este para evitar ls listando arquivos nos diretórios:
ls -lfd _* [!_]*