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

13

¿Cómo hago que ls ordene por tipo de archivo (por ejemplo, primero los directorios y luego la extensión del archivo)? Las respuestas sugeridas en (Superusuario) hacen que la ordenación por tipo de archivo genere errores de opción desconocidos de ls .

    
pregunta Kit 10.02.2012 - 07:52

2 respuestas

19

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

Puede obtener la versión GNU de ls para su sistema. La forma más sencilla de hacerlo es a través del Homebrew administrador de paquetes y sistema de transferencia. Con Homebrew instalado hacer:

brew install coreutils

para agregar el paquete GNU Core Utilities a su sistema. Todas las utilidades tendrán el prefijo g para que no coincidan con las utilidades predeterminadas de Darwin con las que OS X viene.

Con GNU Core Utilites instalado, ahora puedes hacerlo:

gls -X

Y verás la salida ordenada como desees.

Si desea utilizar las Utilidades básicas de GNU en lugar de las utilidades que vienen con OS X, puede poner la siguiente línea en su archivo ~/.bashrc :

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

Y ya no necesitarás usar el prefijo g en los comandos. Diré que esto no es algo completamente seguro ya que algunas de las utilidades de GNU se diferencian de las funciones integradas de bash y las herramientas de Darwin en la forma en que se comportan, lo suficiente para que puedan arruinar otras cosas en su sesión de shell. Así que haz esto con precaución.

    
respondido por el Ian C. 10.02.2012 - 15:46
1

Basado en una respuesta en el artículo del 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 parte cut .

    
respondido por el nohillside 10.02.2012 - 21:54

Lea otras preguntas en las etiquetas