O título é um resumo do que estou tentando alcançar, mas darei um exemplo para ilustrar qual é meu problema e como estou tentando resolvê-lo.
Pasta de exemplo
Digamos que eu tenha uma pasta em um sistema Linux com os seguintes arquivos: .a
, .A
, .b
, .B
, a
, A
, b
e B
.
Thunar
Quando abro a pasta no Thunar, meu gerenciador de arquivos preferido, os arquivos são exibidos nesta ordem:
.a
.A
.b
.B
a
A
b
B
Esta é uma saída que faz sentido para mim; primeiro os arquivos ocultos (ou diretórios), depois classificados alfabeticamente (onde o caso é levado em conta). De preferência, eu teria os arquivos em letras maiúsculas classificados antes dos em letras minúsculas, mas não é tão ruim. Em outras palavras, esta é a saída que estou tentando obter com ls
.
ls
Quando quero listar os arquivos desta pasta via ls
, isto é o que obtenho:
$ ls -lA
total 0
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 .a
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 a
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 .A
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 A
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 .b
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 b
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 .B
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 B
Aqui, os arquivos ocultos não são classificados no topo, mas os arquivos em geral são classificados em uma ordem alfabética "sensata".
Experimentando com LC_ALL=C
eLC_COLLATE=C
Algumas soluções para classificar os arquivos ocultos no topo são definir temporariamente LC_ALL
ou LC_COLLATE
como C
(estou com dificuldade para ver a diferença entre os dois, então uma explicação seria muito apreciada):
$ LC_ALL=C ls -lA
total 0
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 .A
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 .B
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 .a
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 .b
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 A
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 B
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 a
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 b
$ LC_COLLATE=C ls -lA
total 0
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 .A
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 .B
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 .a
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 .b
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 A
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 B
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 a
-rw-r--r-- 1 lucas lucas 0 Jan 26 14:58 b
Como você pode ver, isso resolve o problema dos arquivos ocultos, mas o comportamento da classificação alfabética agora é inconsistente com a forma como o Thunar classifica os arquivos em ordem alfabética.
Questões
Então isso levanta a questão: como eu consigo ls
classificar da mesma forma que o Thunar? De preferência, eu quero evitar o pipe ls
para outro comando como sort
, já que eu gostaria de criar um alias para esse novo comando para "ls"
ele mesmo.
E se isso não for possível, como posso fazer o Thunar classificar os arquivos da maneira que ls
ele classificaria os arquivos (o método LC_ALL=C
/ LC_COLLATE=C
parece bom o suficiente para mim)?
Por extensão, gostaria de perguntar quais são as melhores práticas ao classificar arquivos em ordem alfabética. O comportamento que acabei de descrever é exatamente o que parece sensato para mim, mas talvez não seja, afinal?