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.:
lsne trie pas si -c1spécifié: y a-t-il un moyen de le faire? ( --sort=namene 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.
lsfrom coreutilseffectue un tri sensible aux paramètres régionaux par défaut, et peut donc produire des résultats surprenants dans certains cas (par exemple, %footriera entre baret quuxdans LANG=en_US). Si vous voulez un tri ASCIIbétique, utilisez
LANG=C ls
LANGilfnuence 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-8locale (si votre système le prend en charge) et / ou utiliser l' -bindicateur. Mieux encore, ne pas utiliser lsdu tout, mieux utiliser `
lstrie 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 -lressemblera à 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,9vous triez la colonne 9jusqu'à 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,9dire?
9jusqu'à la même colonne 9. Une lssortie 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-casesur tri.
AVIS: "a" vient APRÈS "Z":
$ touch A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
normalsolutions 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 lsréussirait même si bash avait un ls intégré. builtin lsFaites plutôt en bash et obtenez une erreur.
which renvoie toujours un chemin. Permet type lsde déterminer ce que pense le shell ls(intégré, fonction, exécutable).
L' lsutilitaire 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 .bashrcfichier pour les alias.
aliaspour 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 --