Pouvez-vous trier une liste ls par nom?
Pouvez-vous trier une liste ls par nom?
Réponses:
Mon ls trie par nom par défaut. Que vois-tu?
man ls
États:
List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.
:
ls
ne trie pas si -c1
spécifié: y a-t-il un moyen de le faire? ( --sort=name
ne semble pas fonctionner)
ls -la
, je vois .bashrc - can - .config - Downloads - .local - tmp
.bashrc - .config - .local - Downloads - can - tmp
Pour quelque chose de simple, vous pouvez combiner ls avec sort . Pour juste une liste de noms de fichiers:
ls -1 | Trier
Pour les trier dans l'ordre inverse:
ls -1 | trier -r
ls | sort -n
1.1.1; 1.1.2; 1.1.3; 2.10.1; 2.10.15; 2.10.2; 2.10.20; 2.10.21; 2.1.1; 2.1.10; 2.1.15; 2.1.2; 2.1.3; 2.1.4; 10.1.1; 10.1.2; 10.1.3; 11.0.1; 11.0.2; 11.0.20; 11.0.21; 11.0.22; Comme vous pouvez le voir 2.10.15 avant 2.10.2 .
ls -1r
.
ls
from coreutils
effectue un tri sensible aux paramètres régionaux 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 ASCIIbétique, utilisez
LANG=C ls
LANG
ilfnuence le comportement de tri, ce post m'aide beaucoup!
?
pour chaque caractère non-ascii lorsque la sortie est un terminal (une mauvaise fonctionnalité de ls vérifie si elle est sortie vers un terminal, fonctionne lors de la tuyauterie). Vous pouvez "corriger" cela avec un piping vers cat, utiliser la C.UTF-8
locale (si votre système le prend en charge) et / ou utiliser l' -b
indicateur. Mieux encore, ne pas utiliser ls
du tout, mieux utiliser `
ls
trie les tirets avant les tirets.
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
Donc, avec 9,9
vous triez la colonne 9
jusqu'à la colonne 9
, étant les noms de fichiers. Vous devez indiquer où vous arrêter, qui est la même colonne dans ce cas. Les colonnes commencent par1
.
De plus, si vous souhaitez ignorer les majuscules / minuscules, ajoutez --ignore-case
à la commande de tri.
-k9,9
dire?
9
jusqu'à la même colonne 9
. Une ls
sortie normale ressemble à ceci drwx------ 8 999 user 4.0K Feb 5 2017 file.txt
:, donc la colonne 9 étant les noms de fichiers. Si vous souhaitez ignorer la casse, utilisez --ignore-case
sur tri.
AVIS: "a" vient APRÈS "Z":
$ touch A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
normal
solutions ici.
Les fichiers n'étant différents que par une chaîne numérique peuvent être triés sur ce numéro à la 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
Depuis la page de manuel (pour bash ls):
Triez les entrées par ordre alphabétique si aucune de -cftuSUX ni --sort.
which ls
réussirait même si bash avait un ls intégré. builtin ls
Faites plutôt en bash et obtenez une erreur.
which
renvoie toujours un chemin. Permet type ls
de déterminer ce que pense le shell ls
(intégré, fonction, exécutable).
L' ls
utilitaire doit être conforme à la norme IEEE 1003.1-2001 ( POSIX.1
) qui stipule:
22027: il doit trier les opérandes de répertoire et de non-répertoire séparément selon la séquence de classement dans la locale courante.
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
Vérifiez votre .bashrc
fichier pour les alias.
alias
pour vérifier tous les alias actuels.
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 --