S'il ne trie pas par nom sans aucun argument, vous voudrez peut-être vérifier si ls a été aliasé sur quelque chose d'autre, ou simplement l'invoquer en utilisant le chemin complet qui éliminerait tous les alias existants.
tvanfosson
gnu-coreutils ls trie par défaut. Quel système utilisez-vous (comme d'autres l'ont demandé)
Nick Fortescue
Êtes-vous sûr que vous demandez de trier par nom et non par type (c.-à-d. Répertoire d'abord puis fichiers) ??
Curtisk
Les majuscules viennent avant les minuscules, donc le fichier Z vient avant le fichier a ... comment puis-je résoudre ce problème?
ArtOfWarfare
La page de manuel indique «triés séparément et dans l'ordre lexicographique». Les fichiers sont triés en fonction du premier caractère: numérique [0..9] et caractères UPPER [A..Z] et lowe caractères [a..z]
Gürol Canbek
Réponses:
131
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.:
Existe-t-il un moyen de trier les fichiers comme ceci: ls | sort -n1.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 .
BBK
Je fais du développement Android sur un appareil Pidion, et ls ne trie pas automatiquement, donc cela a été très utile! Le seul problème est qu'il semble qu'il trie les liens souples mais ne trie pas les fichiers, pour une raison quelconque
Mitch
Sur Mac, il semble que cette deuxième commande puisse être raccourcie en ls -1r.
Ash Ryan Arnwine
4
@BBK sort -V triera par numéro de version, donc vous obtenez .. 2.10.2; 2.10.15; .. from man sort .. --sort = WORD triera selon WORD: general-numeric -g, human-numeric -h, month -M, numeric -n, random -R, version -V
mosh
35
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
LANGilfnuence le comportement de tri, ce post m'aide beaucoup!
yurenchen
Cela a fonctionné pour moi aussi. Pouvez-vous développer? Pourquoi le tri est-il différent?
Kostas
1
Cette dose fonctionne, mais la sortie ?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 `
12431234123412341234123
Cela m'a aidé à découvrir que pour moi, le problème était que certains de mes noms de fichiers contenaient un tiret (-), et d'autres un tiret en (-). lstrie les tirets avant les tirets.
Jamy Mahabier le
17
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.
Trouvé, cela signifie trier la colonne 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.
Ce n'est pas toujours vrai. Je ne connais pas exactement les circonstances qui rendent cela faux, mais sur ma machine exécutant Ubuntu 12.04, la sortie de ls est triée par ordre alphabétique (en ignorant la casse).
Patrick James McDougle
Bonne prise! On dirait qu'il le commande en fonction du code ASCII. Les alphabets en majuscules sont suivis de minuscules ..
Kent Pawar
1
J'ai remarqué que mon MacOS triait les premiers chiffres, puis les lettres majuscules, puis les traits de soulignement, puis les lettres minuscules. C'est drôle qu'ils ne soient pas sensibles à la casse. D'un autre côté, mon Debian est sensible à la casse mais il trie les lettres de manière insensible à moins qu'il n'y ait une égalité, alors les minuscules l'emportent! Exemple: ABA.txt ABb.txt aBC.txt AbC.txt ABc.txt
zk82
Je suis aussi sur un MAC. J'ai été déçu de voir le type de tri A, Z, a, z. Je suis ici parce que je préfère avoir A, a, Z, a. merci pour votre conseil. va essayer les normalsolutions ici.
nyxee
8
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:
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 --
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.
:la source
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
la source
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
fromcoreutils
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 entrebar
etquux
dansLANG=en_US
). Si vous voulez un tri ASCIIbétique, utilisezla source
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 laC.UTF-8
locale (si votre système le prend en charge) et / ou utiliser l'-b
indicateur. Mieux encore, ne pas utiliserls
du tout, mieux utiliser `ls
trie les tirets avant les tirets.La beauté des outils * nix est que vous pouvez les combiner:
La sortie de
ls -l
ressemblera à ceciDonc, avec
9,9
vous triez la colonne9
jusqu'à la colonne9
, é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.la source
-k9,9
dire?9
jusqu'à la même colonne9
. Unels
sortie normale ressemble à cecidrwx------ 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
la source
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:
Exemple:
la source
Depuis la page de manuel (pour bash ls):
la source
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. Permettype ls
de déterminer ce que pense le shellls
(intégré, fonction, exécutable).L'
ls
utilitaire doit être conforme à la norme IEEE 1003.1-2001 (POSIX.1
) qui stipule:la source
Vérifiez votre
.bashrc
fichier pour les alias.la source
alias
pour vérifier tous les alias actuels.ls -X fonctionne dans ce but, au cas où vous auriez un alias ls avec une valeur par défaut plus utile.
la source
la source