¿Puedes ordenar un listado de ls por nombre?
¿Puedes ordenar un listado de ls por nombre?
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.:
lsno se ordena si se -c1especifica: ¿hay alguna manera de hacerlo? ( --sort=nameno parece funcionar)
ls -la, ya veo:, el .bashrc - can - .config - Downloads - .local - tmpnombre 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
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.
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
LANG=C ls
LANGSin 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 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 `
lsordena guiones antes de guiones.
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.
Además, si desea ignorar mayúsculas / minúsculas, agregue --ignore-caseal comando ordenar.
-k9,9significa
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.
AVISO: "a" viene DESPUÉS de "Z":
$ touch A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
normalsoluciones 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:
ls -x1 file | sort -t'<char>' -n -k2
Ejemplo:
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
Desde la página del manual (para bash ls):
Ordene las entradas alfabéticamente si ninguna de -cftuSUX ni --sort.
which lstendría éxito incluso si bash tuviera un ls incorporado. Más bien, hazlo builtin lsen bash y obtén un error.
whichsiempre devuelve una ruta. Se usa type lspara determinar qué piensa el shell ls(integrado, función, ejecutable).
La lsutilidad debe cumplir con IEEE Std 1003.1-2001 ( POSIX.1) que establece:
22027: clasificará los operandos con y sin directorio por separado de acuerdo con la secuencia de clasificación en el entorno local actual.
26027: Por defecto, el formato no está especificado, pero la salida se ordenará alfabéticamente por nombre de símbolo:
- Nombre de biblioteca u objeto, si se especifica −A
- Nombre del símbolo
- Tipo de símbolo
- Valor del símbolo
- El tamaño asociado con el símbolo, si corresponde.
Verifique su .bashrcarchivo para los alias.
aliaspara verificar todos los alias actuales.
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 --