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=extensiony--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=extensioncon--group-directories-firsty 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 lses tu amigo!)fuente
gls --group-directories-firsten Mac si instalaGNU Core utilssobre 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 pasarevysortno 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
CLICOLORactivado 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
lsadmite la--sortopció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:)