¿Cómo puedo hacer ls
¿Ordenar por tipo de archivo (por ejemplo, primero los directorios y luego la extensión del archivo)? Las respuestas sugeridas en (Super Usuario) Hacer que ls ordene por tipo de archivo dan lugar a errores de opción desconocidos de ls
.
Respuestas
¿Demasiados anuncios?Como has comprobado, la versión de Darwin del ls
no admite el comando -X | --sort=extension
opción. 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 fácil de hacerlo es a través del Homebrew gestor de paquetes y sistema de portabilidad. Con Homebrew instalado hacer:
brew install coreutils
para añadir el Utilidades básicas de GNU a su sistema. Todas las utilidades llevarán el prefijo g
para que no choquen con las utilidades Darwin por defecto que trae OS X.
Con las GNU Core Utilites instaladas ya puedes hacer:
gls -X
Y verás la salida ordenada como deseas.
Si quieres usar las GNU Core Utils en lugar de las utilidades que vienen con OS X puedes poner la siguiente línea en tu ~/.bashrc
archivo:
source /usr/local/Cellar/coreutils/8.14/aliases
Y no necesitarás usar el g
prefijo en los comandos más. Diré que esto no es algo totalmente seguro, ya que algunas de las utilidades de GNU difieren de las herramientas de bash y Darwin en su comportamiento, lo suficiente como para que puedan arruinar otras cosas en tu sesión de shell. Así que hazlo con precaución.
Basado en una respuesta en el artículo vinculado de Super User :
ls -l |sort -d -k 1.1,1.1r -k 9 | cut -c 50-
Si quiere ver la salida completa de ls -l
, sólo hay que omitir el cut
parte.
2 votos
Una pequeña corrección respecto a tu título: ls no es un comando bash; es un ejecutable independiente ubicado en
/bin/ls
.