Elenco di directory non completamente ordinato


18

Ho il seguente elenco di directory su un sistema Debian Linux. Tuttavia, una cosa strana è che il file populate.sql non sembra essere ordinato con il 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

All'inizio ho pensato che potesse essere a causa di un personaggio nascosto o qualcosa del genere, ma non riesco a pensare a un personaggio nascosto che si verificherebbe tra r e s. Inoltre, se digito vim populate.sqlnel prompt dei comandi apre il file corretto che è un'ulteriore prova che non c'è uno strano carattere lì.

Qualche idea sul perché populate.sqlnon venga ordinato correttamente?


1
È su un sistema Linux o Mac OS / BSD? (Le lsversioni sono diverse.) Sembra quasi che il periodo venga ignorato ai fini dell'ordinamento, il che è interessante.
Wildcard il

@Wildcard È su Debian Linux
kojow7 il

Risposte:


27

LC_COLLATEcon qualsiasi confronto compatibile con Unicode, ad es. en_US.UTF-8risulta in un ordinamento che ignora la punteggiatura. Di conseguenza, populate.sqlordina come populatesqldopo populatersqlma prima populatessql.

Se vuoi vedere questo comportamento cambiare, prova a eseguirlo LC_COLLATE=C ls -ale verrà ordinato in un ordinamento C (per byte specifici senza riguardo a punti di codice o locali).


2
Interessante. Le versioni recenti di Debian sono simili per impostazione predefinita o esiste un'impostazione che avrei modificato per abilitarlo? Non ricordo di aver mai riscontrato questo "problema" prima?
kojow7,

Non so quanto sia recente o meno, ma credo che il locale predefinito fosse sempre C.
David

1
Quando nessuna delle variabili LC_ *, LANG è impostata, la locale predefinita è ed è sempre stata C / POSIX, ma la maggior parte dei sistemi ha una locale predefinita configurata e gli utenti possono generalmente specificarne anche una al momento dell'accesso. Quel comportamento di ordinamento delle versioni locali di GNU libc come trovato su Debian è stato così per oltre 10 anni.
Stéphane Chazelas,

Solo per riferimento, ho provato una nuova installazione di Debian e sì, per impostazione predefinita ignora la punteggiatura nel suo ordinamento. In /etc/default/localeesso dice LANG="en_US.UTF-8".
kojow7,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.