web-dev-qa-db-fra.com

Les 'ls' d'Unix triés par nom

Pouvez-vous trier une liste ls par nom?

112
Devang Kamdar

Mon ls trie par nom par défaut. Que vois-tu?

man ls déclare:

List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.:

120
Evert

Pour quelque chose de simple, vous pouvez combiner ls avec sort. Pour juste une liste de noms de fichiers:
ls -1 | tri

Pour les trier dans l'ordre inverse:
ls -1 | sort -r

97
Mark

ls from coreutils effectue un tri sensible à la localisation par défaut, et peut donc produire des résultats surprenants dans certains cas (par exemple, %foo triera entre bar et quux dans LANG=en_US). Si vous voulez un tri ASCIIbetical, utilisez

LANG=C ls
31
Richard Smith

La beauté des outils * nix est que vous pouvez les combiner:

ls -l | sort -k9,9

La sortie de ls -l ressemblera à ceci

-rw-rw-r-- 1 luckydonald luckydonald  532 Feb 21  2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt

Ainsi, avec 9,9, vous triez la colonne 9 jusqu'à la colonne 9, les noms de fichier. Vous devez indiquer où vous arrêter, ce qui est la même colonne dans ce cas. Les colonnes commencent par 1.

De même, si vous souhaitez ignorer les majuscules/minuscules, ajoutez --ignore-case à la commande de tri.

17
user491575

AVIS: "a" vient APRES "Z":

$ touch A.txt aa.txt Z.txt

$ ls

A.txt Z.txt aa.txt

8
russian_spy

Les fichiers n'étant différents que par une chaîne numérique peuvent être triés sur ce nombre à condition qu'il soit précédé d'un séparateur.

Dans ce cas, la syntaxe suivante peut être utilisée:

ls -x1 file | sort -t'<char>' -n -k2

Exemple:

ls -1 TRA*log | sort -t'_' -n -k2

TRACE_1.log
TRACE_2.log
TRACE_3.log
TRACE_4.log
TRACE_5.log
TRACE_6.log
TRACE_7.log
TRACE_8.log
TRACE_9.log
TRACE_10.log
5
poney

Depuis la page de manuel (pour bash ls):

Triez les entrées par ordre alphabétique si aucun de -cftuSUX ni de --sort.

4
jwoolard

Vérifiez votre fichier .bashrc pour les alias.

3
Sujit

L'utilitaire ls doit être conforme à la norme IEEE 1003.1-2001 ( POSIX.1 ) qui indique:

22027: il doit trier les opérandes de répertoire et les non-opérateurs de répertoire séparément en fonction de la séquence de classement dans les paramètres régionaux en cours.

26027: Par défaut, le format n'est pas spécifié, mais la sortie doit être triée par ordre alphabétique par nom de symbole:

  • Nom de la bibliothèque ou de l'objet, si −A est spécifié
  • Nom du symbole
  • Type de symbole
  • Valeur du symbole
  • La taille associée au symbole, le cas échéant
3
kenorb

ls -X fonctionne à cet effet, au cas où vous auriez aliasé ls sur un défaut plus utile.

2
jezzo
In Debian Jessie, this works Nice:

ls -lah --group-directories-first

# l=use a long listing format
# a=do not ignore entries starting with .
# h=human readable
# --group-directories-first=(obvious)
# Note: add -r for reverse alpha

# You might consider using lh by appending to ~/.bashrc as the alias:
~$ echo "alias lh='ls -lah --group-directories-first'" >>~/.bashrc
# -- restart your terminal before using lh command --
0
James T