Comment puis-je d'abord répertorier les dossiers avec des traits de soulignement?

23

Donc, comme à peu près tout le monde, avant d'utiliser Ubuntu, j'utilisais une machine Windows, et l'une des choses auxquelles je m'étais habitué dans Windows était d'utiliser le trait de soulignement comme premier caractère d'un nom de dossier comme une sorte de marquage spécial afin qu'il soit apparaissent en premier sur la liste, à la fois en ligne de commande et dans l'explorateur de fichiers.

Par exemple, dans mon dossier eBooks (sous Windows) ressemble à ceci:

_read
      Book1.pdf
      Book2.pdf
_reading
      Book3.pdf
Book4.pdf
Book5.pdf

mais dans Nautilus d'Ubuntu, cela ressemble à ceci:

Book4.pdf
Book5.pdf    
_read
      Book1.pdf
      Book2.pdf
_reading
      Book3.pdf

Ce qui se passe, c'est qu'il ignore complètement le trait de soulignement et qu'il traite "_read" comme "lu" et ne le répertorie donc pas en premier comme souhaité.

J'ai essayé de définir la variable d'environnement LC_COLLATE sur C. Cela aide en quelque sorte car il répertorie le trait de soulignement ensemble, mais à la fin et non au début.

Merci.

nunos
la source
pouvez-vous inclure une capture d'écran?
philshem
Copie possible de askubuntu.com/questions/115741/… bien que je pense que la réponse de @ maggotbrain est meilleure que celle qui y est présentée.
rudivonstaden

Réponses:

16

Étant donné que vous n'avez pas spécifié les paramètres régionaux que vous utilisez actuellement, cette solution suppose que vous utilisez en_US.UTF-8par défaut.

Vous pouvez le vérifier en exécutant la commande à localepartir de la ligne de commande ( Ctrl+ Alt+ t).

Par exemple:

~ $ locale
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

La variable qui affecte l'ordre de tri des fichiers s'appelle LC_COLLATE .

Selon les pages d'aide d'Ubuntu , la variable LC_COLLATE détermine «comment les chaînes (noms de fichiers ...) sont triées alphabétiquement. préférable aux paramètres régionaux spécifiques à la langue. "

L'ordre de tri devra être changé de LC_COLLATE="en_US.UTF-8"à LC_COLLATE=C.

Depuis la ligne de commande ( Ctrl+ Alt+ t), entrez:

update-locale LC_COLLATE=C

Important: vous devez vous déconnecter de votre système, puis vous reconnecter pour que les modifications prennent effet .

En localeexécutant à nouveau la commande, cela devrait montrer que la LC_COLLATEvariable a bien été modifiée. Réexécuter la commande ls -ldoit refléter cette modification.

Kevin Bowen
la source
1
J'ai déjà défini le LC_COLLATE sur C, comme je l'ai décrit dans le dernier paragraphe de ma question. Pourtant, j'obtiens des résultats différents à la fois dans le terminal et dans l'explorateur nautilus et j'ai entre-temps redémarré l'ordinateur. Une idée pourquoi cela se produit?
nunos
@nunos Avez-vous des alias définis lsdans votre .bashrc?
Kevin Bowen
@nunos Intéressant. Sur quel type de système de fichiers vérifiez-vous cela? Le seul endroit où j'ai des problèmes avec le ls -ltri est sur un lecteur au format ntfs qui ne semble pas honorer la variable LC_COLLATE. Tous mes systèmes de fichiers ext3 semblent respecter ce paramètre en utilisant la commande ls ainsi que dans Thunar et Nautilus.
Kevin Bowen
cela pourrait très bien être le problème alors. J'utilise la ls -lcommande sur un lecteur NTFS, car j'ai un double démarrage avec Windows.
nunos du
2
update-locale LC_COLLATE=Cn'aide pas à obtenir des dossiers avec des traits de soulignement en haut d'une liste triée si vous utilisez des majuscules au début des noms de vos dossiers!
malisokan
1

caja (et je pense que Nautilus avant lui) a une option dans les préférences pour trier les dossiers avant les fichiers. Est-ce que cela aiderait?

desconocido
la source