Por que os arquivos são listados alfabeticamente, ignorando o tamanho do nome do arquivo no terminal?

2

Por que os arquivos são listados em ordem alfabética, ignorando o tamanho do nome do arquivo no terminal?

Talvez eu não devesse dizer "ignorar" o tamanho do nome do arquivo, mas, por que há uma diferença na exibição de arquivos no terminal em comparação a uma GUI.

Esta é certamente uma questão trivial, mas eu estou um pouco curioso sobre isso por um tempo.

No terminal, um comando baunilha ls usando a opção -l (sem nenhuma outra opção de classificação especificada) lista os arquivos em ordem alfabética a partir da linha superior da lista em movimento. Digamos que eu tenha um diretório cheio de arquivos criados com o seguinte:

$ touch file1{1..16}

ls nesse mesmo diretório exibiria o seguinte:

-rw-r--r--. 1 user user  0 May 24 11:14 file1
-rw-r--r--. 1 user user  0 May 24 11:14 file10
-rw-r--r--. 1 user user  0 May 24 11:14 file11
-rw-r--r--. 1 user user  0 May 24 11:14 file12
-rw-r--r--. 1 user user  0 May 24 11:14 file13
-rw-r--r--. 1 user user  0 May 24 11:14 file14
-rw-r--r--. 1 user user  0 May 24 11:14 file15
-rw-r--r--. 1 user user  0 May 24 11:14 file16
-rw-r--r--. 1 user user  0 May 24 11:14 file2
-rw-r--r--. 1 user user  0 May 24 11:14 file3
-rw-r--r--. 1 user user  0 May 24 11:14 file4
-rw-r--r--. 1 user user  0 May 24 11:14 file5
-rw-r--r--. 1 user user  0 May 24 11:14 file6
-rw-r--r--. 1 user user  0 May 24 11:14 file7
-rw-r--r--. 1 user user  0 May 24 11:14 file8
-rw-r--r--. 1 user user  0 May 24 11:14 file9

Minha pergunta é por que o "arquivo10" segue "arquivo1" desta maneira no terminal? Ao visualizar arquivos em um detalhe ou visualização de lista ordenada por nome ou tipo em um ambiente GUI, esses mesmos arquivos são listados como "file1", "file2", "file3", etc.

As listas de arquivos em uma GUI parecem priorizar a ordem alfabética pelo tamanho do nome do arquivo, listando os arquivos do menor para o maior. Isso está correto? Existe uma razão mais técnica para isso? O comando ls "está saindo do caminho" para ordenar os arquivos da maneira como funciona ou, do mesmo modo, com uma GUI?

    
por allenv 24.05.2018 / 19:41

1 resposta

2

A ordem padrão para ls é alfabética. Nesse cenário, dígitos não são números apenas caracteres. Portanto, file1 é um nome mais curto que file10 , mas idêntico e, portanto, vem antes dele na lista.

Se você quiser uma ordem com versões naturais, tente ls -l --sort=version (ou ls -lv )

-rw-r--r--+ 1 roaima 0 May 24 18:50 file0
-rw-r--r--+ 1 roaima 0 May 24 18:50 file1
-rw-r--r--+ 1 roaima 0 May 24 18:50 file2
...
-rw-r--r--+ 1 roaima 0 May 24 18:50 file9
-rw-r--r--+ 1 roaima 0 May 24 18:50 file10
-rw-r--r--+ 1 roaima 0 May 24 18:50 file11
-rw-r--r--+ 1 roaima 0 May 24 18:50 file12
-rw-r--r--+ 1 roaima 0 May 24 18:50 file13

Existem várias outras opções de classificação disponíveis em ls ; veja man ls para detalhes.

    
por 24.05.2018 / 19:53