Listado de directorio no completamente ordenado

18

Tengo la siguiente lista de directorios en un sistema Debian Linux. Sin embargo, una cosa extraña es que el archivo populate.sql no parece estar ordenado con el resto.

-rw-r--r-- 1 user1 user1 10004 Jul 28 13:16 populate2.sql
-rw-r--r-- 1 user1 user1 10244 Jul 28 13:16 populate3.sql
-rw-r--r-- 1 user1 user1 10359 Jul 28 13:16 populate4.sql
-rw-r--r-- 1 user1 user1 11618 Jul 28 13:16 populate5.sql
-rw-r--r-- 1 user1 user1 11654 Jul 28 13:17 populate6.sql
-rw-r--r-- 1 user1 user1 12198 Jul 30 16:20 populate7.sql
-rw-r--r-- 1 user1 user1 12286 Aug 10 00:10 populate8.sql
-rw-r--r-- 1 user1 user1 12331 Aug 19 08:48 populate9.sql
-rw-r--r-- 1 user1 user1 12401 Aug 20 14:58 populatea.sql
-rw-r--r-- 1 user1 user1 12460 Aug 22 01:09 populateb.sql
-rw-r--r-- 1 user1 user1 12503 Aug 22 17:13 populatec.sql
-rw-r--r-- 1 user1 user1 13341 Aug 23 23:23 populated.sql
-rw-r--r-- 1 user1 user1 13414 Aug 27 23:01 populatee.sql
-rw-r--r-- 1 user1 user1 16064 Aug 31 00:03 populatef.sql
-rw-r--r-- 1 user1 user1 17529 Sep 16 15:38 populateg.sql
-rw-r--r-- 1 user1 user1 19348 Sep 19 22:50 populateh.sql
-rw-r--r-- 1 user1 user1 21033 Sep 27 20:46 populatei.sql
-rw-r--r-- 1 user1 user1 21024 Sep 28 00:02 populatej.sql
-rw-r--r-- 1 user1 user1 22505 Sep 28 22:55 populatek.sql
-rw-r--r-- 1 user1 user1 23831 Oct  5 21:24 populatel.sql
-rw-r--r-- 1 user1 user1 23665 Nov  2 22:16 populatem.sql
-rw-r--r-- 1 user1 user1 23513 Nov  4 21:53 populaten.sql
-rw-r--r-- 1 user1 user1 27191 Nov 19 14:55 populateo.sql
-rw-r--r-- 1 user1 user1 30142 Nov 28 17:51 populatep.sql
-rw-r--r-- 1 user1 user1 30853 Dec 10 14:49 populateq.sql
-rw-r--r-- 1 user1 user1 33690 Dec 11 23:43 populater.sql
-rw-r--r-- 1 user1 user1  9945 Jul 28 13:16 populate.sql
-rw-r--r-- 1 user1 user1 38696 Jan 16 22:27 populates.sql
-rw-r--r-- 1 user1 user1 38696 Jan 16 22:27 populatet.sql

Al principio pensé que podría deberse a un personaje oculto o algo así, pero no puedo pensar en un personaje oculto que se interponga entre r y s. Además, si escribo vim populate.sqlen el símbolo del sistema, se abre el archivo correcto, lo que es una prueba más de que no hay un personaje extraño allí.

¿Alguna idea de por qué populate.sqlno se ordena correctamente?

kojow7
fuente
1
¿Está esto en un sistema Linux o Mac OS / BSD? (Las lsversiones son diferentes.) Parece que el período se ignora con el propósito de ordenar, lo cual es interesante.
Comodín el
@Wildcard Está en Debian Linux
kojow7

Respuestas:

27

LC_COLLATEcon cualquier intercalación compatible con Unicode, por ejemplo, en_US.UTF-8da como resultado un orden de clasificación que ignora la puntuación. En consecuencia, se populate.sqlordena como populatesqldespués populatersqlpero antes populatessql.

Si desea ver este cambio de comportamiento, intente ejecutar LC_COLLATE=C ls -al, y se ordenará en orden de clasificación C (por bytes específicos sin tener en cuenta ningún punto de código o configuración regional).

David
fuente
2
Interesante. ¿Las versiones recientes de Debian son así por defecto o hay una configuración que hubiera cambiado para habilitar eso? No recuerdo haber encontrado este 'problema' antes.
kojow7
No sé cuán reciente o no es, pero creo que la configuración regional predeterminada siempre fue C.
David
1
Cuando ninguna de las variables LC_ *, LANG está establecida, la configuración regional predeterminada es y siempre ha sido C / POSIX, pero la mayoría de los sistemas tienen una configuración regional predeterminada y los usuarios generalmente pueden especificar una también en el momento de inicio de sesión. Ese comportamiento de ordenación local de GNU libc como se encuentra en Debian ha sido así durante más de 10 años.
Stéphane Chazelas
Solo como referencia, probé una nueva instalación de Debian y sí, ignora la puntuación en su orden de forma predeterminada. En /etc/default/localeeso dice LANG="en_US.UTF-8".
kojow7