Si no está ordenando por nombre sin ningún argumento, es posible que desee verificar si ls ha sido alias a otra cosa, o simplemente invocarlo usando la ruta completa que eliminaría cualquier alias que exista.
tvanfosson
gnu-coreutils ls ordena por defecto. ¿Qué sistema estás usando (como otros han preguntado)
Nick Fortescue
¿Está seguro de que está pidiendo ordenar por nombre y no por tipo (es decir, primero el directorio y luego los archivos)?
Curtisk
Las letras mayúsculas van antes que las minúsculas, por lo tanto, el archivo Z viene antes que el archivo a ... ¿cómo puedo solucionarlo?
ArtOfWarfare
La página man dice 'ordenado por separado y en orden lexicográfico'. Los archivos se ordenan según el primer carácter: caracteres numéricos [0..9] y SUPERIOR [A..Z] y caracteres lowe [a..z]
Gürol Canbek
Respuestas:
131
Mi ls ordena por nombre por defecto. ¿Qué estas viendo?
man ls estados:
List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.:
lsno se ordena si se -c1especifica: ¿hay alguna manera de hacerlo? ( --sort=nameno parece funcionar)
dhc
1
Eso no es verdad. con ls -la, ya veo:, el .bashrc - can - .config - Downloads - .local - tmpnombre sería:.bashrc - .config - .local - Downloads - can - tmp
12431234123412341234123
1
el mío dice que 100.jpg viene antes de 10.jpg. Tiene sentido, supongo que si "0" viene antes de "". pero todavía no es intuitivo
chiliNUT
Estoy viendo "M" antes de "b". Confuso. Espera, ¿importa la capitalización?
Daniel Springer
105
Para algo simple, puede combinar ls con sort . Para solo una lista de nombres de archivo: ls -1 | ordenar
¿Hay alguna manera de ordenar archivos como este: 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; Como puede ver 2.10.15 antes de 2.10.2 .
BBK
Estoy haciendo un desarrollo de Android en un dispositivo Pidion, y ls no se ordena automáticamente, ¡así que fue muy útil! El único problema es que parece que ordena los enlaces blandos pero no ordena los archivos, por alguna razón
Mitch
En Mac, parece que ese segundo comando se puede acortar ls -1r.
Ash Ryan Arnwine
44
@BBK sort -V ordenará por números de versión, por lo que obtendrá ... 2.10.2; 2.10.15; .. from man sort .. --sort = WORD se ordenará según WORD: general-numeric -g, human-numeric -h, month -M, numeric -n, random -R, version -V
mosh
35
lsfrom coreutilsrealiza una ordenación basada en la configuración regional de forma predeterminada y, por lo tanto, puede producir resultados sorprendentes en algunos casos (por ejemplo, %foose ordenará entre bary quuxdentro LANG=en_US). Si desea una clasificación ASCIIbetical, use
LANGSin tener en cuenta el comportamiento de clasificación, esta publicación me ayudó mucho.
yurenchen
Esto funcionó para mí también. ¿Podrías dar más detalles sobre esto? ¿Por qué se ordena de manera diferente?
Kostas
1
Esta dosis funciona, pero la salida ?para cada carácter no ascii cuando la salida es un terminal (la característica incorrecta de ls verifica si sale a un terminal, funciona cuando se canaliza). Puede "arreglar" esto con tuberías a cat, usar la C.UTF-8configuración regional (si su sistema lo admite) y / o usar la -bbandera. Aún mejor, no lo use lsen absoluto, mejor uso `
12431234123412341234123
Esto me ayudó a descubrir que, para mí, el problema era que algunos de mis nombres de archivo contenían un guión (-) y otros un guión (-). lsordena guiones antes de guiones.
Jamy Mahabier
17
La belleza de las herramientas * nix es que puedes combinarlas:
ls -l | sort -k9,9
La salida de ls -lse verá así
-rw-rw-r-- 1 luckydonald luckydonald 532 Feb 21 2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt
Entonces, con la 9,9clasificación de la columna 9hasta la columna 9, son los nombres de los archivos. Debe proporcionar dónde detenerse, que es la misma columna en este caso. Las columnas comienzan con 1.
Descubierto, significa ordenar la columna 9hasta la misma columna 9. Una lssalida normal se ve así: drwx------ 8 999 user 4.0K Feb 5 2017 file.txtasí que la columna 9 son los nombres de los archivos. Si quieres ignorar el caso, úsalo --ignore-caseen sort.
Esto no siempre es cierto. No sé exactamente las circunstancias que hacen que esto no sea cierto, pero en mi máquina que ejecuta Ubuntu 12.04 la salida de ls está ordenada alfabéticamente (ignorando mayúsculas y minúsculas).
Patrick James McDougle
¡Buena atrapada! Parece que lo está ordenando en base al código ASCII. Los alfabetos en mayúsculas van seguidos de minúsculas.
Kent Pawar
1
Noté que mi MacOS ordena los primeros números, luego las letras mayúsculas, luego el subrayado y luego las letras minúsculas. Es curioso que no distingan entre mayúsculas y minúsculas. Por otro lado, mi Debian distingue entre mayúsculas y minúsculas, pero clasifica las letras insensiblemente a menos que haya un empate, ¡entonces gana en minúsculas! Ejemplo: ABA.txt ABb.txt aBC.txt AbC.txt ABc.txt
zk82
Estoy en un MAC también. Me decepcionó ver el tipo de clasificación A, Z, a, z. Estoy aquí porque prefiero tener A, a, Z, a. Gracias por tu consejo. Probaré las normalsoluciones aquí.
nyxee
8
Los archivos que son diferentes solo por una cadena numérica se pueden ordenar en este número a condición de que esté precedido por un separador.
En este caso, se puede usar la siguiente sintaxis:
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 --
Respuestas:
Mi ls ordena por nombre por defecto. ¿Qué estas viendo?
man ls
estados:List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.
:fuente
ls
no se ordena si se-c1
especifica: ¿hay alguna manera de hacerlo? (--sort=name
no parece funcionar)ls -la
, ya veo:, el.bashrc - can - .config - Downloads - .local - tmp
nombre sería:.bashrc - .config - .local - Downloads - can - tmp
Para algo simple, puede combinar ls con sort . Para solo una lista de nombres de archivo:
ls -1 | ordenar
Para ordenarlos en orden inverso:
ls -1 | sort -r
fuente
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; Como puede ver 2.10.15 antes de 2.10.2 .ls -1r
.ls
fromcoreutils
realiza una ordenación basada en la configuración regional de forma predeterminada y, por lo tanto, puede producir resultados sorprendentes en algunos casos (por ejemplo,%foo
se ordenará entrebar
yquux
dentroLANG=en_US
). Si desea una clasificación ASCIIbetical, usefuente
LANG
Sin tener en cuenta el comportamiento de clasificación, esta publicación me ayudó mucho.?
para cada carácter no ascii cuando la salida es un terminal (la característica incorrecta de ls verifica si sale a un terminal, funciona cuando se canaliza). Puede "arreglar" esto con tuberías a cat, usar laC.UTF-8
configuración regional (si su sistema lo admite) y / o usar la-b
bandera. Aún mejor, no lo usels
en absoluto, mejor uso `ls
ordena guiones antes de guiones.La belleza de las herramientas * nix es que puedes combinarlas:
La salida de
ls -l
se verá asíEntonces, con la
9,9
clasificación de la columna9
hasta la columna9
, son los nombres de los archivos. Debe proporcionar dónde detenerse, que es la misma columna en este caso. Las columnas comienzan con1
.Además, si desea ignorar mayúsculas / minúsculas, agregue
--ignore-case
al comando ordenar.fuente
-k9,9
significa9
hasta la misma columna9
. Unals
salida normal se ve así:drwx------ 8 999 user 4.0K Feb 5 2017 file.txt
así que la columna 9 son los nombres de los archivos. Si quieres ignorar el caso, úsalo--ignore-case
en sort.AVISO: "a" viene DESPUÉS de "Z":
$ touch A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
fuente
normal
soluciones aquí.Los archivos que son diferentes solo por una cadena numérica se pueden ordenar en este número a condición de que esté precedido por un separador.
En este caso, se puede usar la siguiente sintaxis:
Ejemplo:
fuente
Desde la página del manual (para bash ls):
fuente
which ls
tendría éxito incluso si bash tuviera un ls incorporado. Más bien, hazlobuiltin ls
en bash y obtén un error.which
siempre devuelve una ruta. Se usatype ls
para determinar qué piensa el shellls
(integrado, función, ejecutable).La
ls
utilidad debe cumplir con IEEE Std 1003.1-2001 (POSIX.1
) que establece:fuente
Verifique su
.bashrc
archivo para los alias.fuente
alias
para verificar todos los alias actuales.ls -X funciona para ese propósito, en caso de que haya alias ls a un valor predeterminado más útil.
fuente
fuente