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 _* [!_]*