Haga que el comando ls se ordene por tipo de archivo (por ejemplo, directorios y extensión de archivo)

15

¿Cómo hago para lsordenar por tipo de archivo (por ejemplo, directorios primero y luego por extensión de archivo)? Las respuestas sugeridas en (Superusuario) Hacer ls ordenar por tipo de archivo dan como resultado errores de opción desconocidos ls.

Equipo
fuente
2
Corrección menor con respecto a su título: ls no es un comando bash; Es un ejecutable independiente ubicado en /bin/ls.
bneely

Respuestas:

21

Como descubrió, la versión Darwin del lscomando no admite la -X | --sort=extensionopción. Esta opción es exclusiva de la versión GNU de ls.

Puede obtener la versión GNU de lssu sistema. La forma más fácil de hacerlo es a través del administrador de paquetes Homebrew y el sistema de portabilidad. Con Homebrew instalado haz:

brew install coreutils

para agregar el paquete GNU Core Utilities a su sistema. Todas las utilidades tendrán el prefijo gpara que no choquen con las utilidades predeterminadas de Darwin con las que se incluye OS X.

Con GNU Core Utilites instalado, ahora puede hacer:

gls -X

Y verá la salida ordenada como desee.

Si desea utilizar GNU Core Utils en lugar de las utilidades que vienen con OS X, puede poner la siguiente línea en su ~/.bashrcarchivo:

source /usr/local/Cellar/coreutils/8.14/aliases

Y ya no necesitará usar el gprefijo en los comandos. Diré que esto no es algo completamente seguro, ya que algunas de las utilidades de GNU difieren de las herramientas integradas de bash y las herramientas de Darwin en su comportamiento, lo suficiente como para que puedan arruinar otras cosas en su sesión de shell. Hazlo con precaución.

Ian C.
fuente
1

Basado en una respuesta en el artículo de Superusuario vinculado :

ls -l |sort -d -k 1.1,1.1r -k 9 | cut -c 50-

Si desea ver la salida completa de ls -l, simplemente omita la cutparte.

nohillside
fuente