Por defecto, el comando ls se ordena solo por nombre de archivo, pero quiero que los directorios aparezcan antes que otros tipos de archivos. Incluso podría querer ordenar los archivos por extensión, como la forma en que el explorador de Windows ordena por columna de tipo. ¿Hay alguna manera de hacer algo similar con ls?
44
--sort=extension
y--group-directories-first
(o solo--group-directories
) funciona bien para mí en Ubuntu 12.10. Vale la pena intentarlo en tu máquina también. =)-X / --sort=extension
con--group-directories-first
y todo lo demás que he probado en modernas distribuciones de Linux. El OP se refiere a Fedora Core 8 (lanzado en 2007), por lo que es probable que tales problemas estén en el pasado distante.En Linux,
(
man ls
es tu amigo!)fuente
gls --group-directories-first
en Mac si instalaGNU Core utils
sobre homebrew-X es la opción que estás buscando:
fuente
En bash, esto funcionará:
De
man rev
:Entonces 1. ls da su salida, con cualquier indicador que desee 2. cada línea se invierte 3. luego se ordenan 4. y se invierten nuevamente 5. así:
O, más al punto, como a continuación. Se ordenan por último carácter, luego penúltimo, etc. Todos los archivos .rtf, por ejemplo, se enumeran juntos, después de un archivo .save y otro archivo sin extensión cuyo nombre termina en 'e'. Luego vienen los archivos .png, y así sucesivamente. Esto también funcionará con ls -l, porque la extensión es normalmente lo último en la línea (excepciones si tiene líneas como "tmp @ -> / home / jones / tmp", donde los enlaces son seguidos por sus objetivos).
fuente
ls -F
-F
) si lo pasarev
ysort
no quita el color (-G
).Si no estás en Linux,
primero debe ordenar los directorios (avíseme si me equivoco). Sin embargo, no se ordena por extensión: debe hacer que la declaración awk sea mucho más ocupada si desea hacer eso ...
Para que también funcione con nombres que contienen espacios, probablemente reemplazaría el awk con algo como
sed -E -e 's/([^ ]+[ ]+){8}//'
eliminar los primeros 8 campos en lugar de imprimir el novenofuente
CLICOLOR
activado esto eliminará el color.sed -E -e 's/([^ ]+[ ]+){8}//'
eliminar los primeros 8 campos en lugar de imprimir el novenols -l |sort -d -k 1.1,1.1r -k 9 | cut -c 50-
Si está ejecutando en Linux, GNU
ls
admite la--sort
opción: -fuente
Un buen enfoque es separar las carpetas al principio, luego los archivos ordenados por extensiones , por ORDENAR y REVERTIR:
fuente
Agregué a mi .bashrc (linux) la línea
de esa manera solo escribo lx y lo ordeno por extensión.
fuente
ls -X
:)