31 votos

¿Cómo puedo cambiar el formato de tiempo utilizado por la línea de comandos ls en osx?

Quiero hacer ls mostrar el tiempo en ISO formato (formato militar). ¿Cómo puedo cambiar este comportamiento?

En Linux sabía que podía forzar a ls a mostrar la hora en formato largo utilizando --full-time pero esto no funciona en OS X.

Actualización: Sé que el formato utilizado por el comando se basa en el locale ajustes. El problema es que en OS X no he podido utilizar el truco de configurar LC_TIME=en_DK .

1 votos

Una respuesta que no es, pero que puede ser útil: El comando stat(1) es bastante flexible y puede hacer que se muestren las marcas de tiempo en cualquier formato deseado.

0 votos

Gls (gnu ls) que mencioné en mi respuesta puede tomar una bandera --style= en la que se puede especificar una cadena +FORMAT, por lo que puede hacer que la fecha aparezca de la forma que desee.

0 votos

Me gustaría saber una manera. El manual BSD de Apple para ls parece no ofrecer nada para formatear las fechas, aparte de cambiar la zona horaria y ordenar por fecha en lugar de por alfa. developer.apple.com/library/mac/documentation/Darwin/Reference/

20voto

Daisuke Shimamoto Puntos 1141

Si instalas gnu coreutils entonces gnu ls está disponible, que hará lo que se requiere. Si utiliza brew como gestor de paquetes, es tan simple como:

brew install coreutils
gls -l --time-style=full-iso

0 votos

Gracias, esto es útil pero no resuelve el problema. El formato completo utilizado sigue sin ser ISO-8601.

0 votos

OK - puedes instalar gnu coreutils que incluye gnu ls, que hará lo que quieres. La forma más fácil es una de brew, MacPorts o Fink. Yo utilizo brew - así que simplemente ejecutando 'brew install coreutils' funciona. Entonces tendrás gls disponible.

2 votos

En particular, brew install coreutils resultados en /usr/local/bin/gls que se está instalando, por lo que hay que ejecutar gls en lugar de ls .

19voto

Jay Puntos 106

El sistema integrado de OS X ls no toma argumentos de formato de tiempo, pero el comando stat toma cadenas con formato strftime para que puedas obtener una aproximación de lo que quieres haciendo

stat -l -t '%FT%T' *

El %FT%T produce una marca de tiempo local ISO8601. Añade un %z si desea un desplazamiento UTC.

Pero mientras la marca de tiempo es correcta, el resto sólo se aproxima a lo que se obtendría de ls. Por ejemplo, ls -l alinea correctamente los campos en columnas, puede colorear la salida y, por supuesto, enumera el contenido de los directorios en lugar de requerir que se pasen todos los nombres de los archivos como argumentos. Al menos puede reproducir la alineación correcta pasando la salida por tr para convertir todos los espacios en tabulaciones:

stat -l -t '%F%T' * | tr ' ' \\t

Como alternativa, creo que debería ser posible conseguir ls -l para producir una marca de tiempo ISO8601 definiendo una configuración regional personalizada, pero no lo he visto hacer.

1voto

Bruce Smith Puntos 11
stat -l -t '%FT%T' *

A mí me ha funcionado bien. Necesitaba ver tanto el tamaño del archivo como la marca de tiempo. Me pregunto por qué Apple consideró oportuno descartar el mod de tiempo bastante estándar de ls -l . Incluso saqué mi UNIX en pocas palabras ¡!

1voto

Christel Smith Puntos 11

Usando MacOS Monterrey me funciona lo siguiente:

ls -lD '%FT%T'

Estoy usando un alias que también conserva la salida de color:

alias ls="ls -D '%FT%T' --color=auto"

-2voto

Kumar Puntos 11

ls -l --time-style=iso me funciona bien.

1 votos

No lo hace. Mountain Lion.

2 votos

Tampoco en los Mavericks.

5 votos

Probablemente funciona bien para el OP, porque él o ella ha instalado un sistema no ls sin darse cuenta, a través de un gestor de paquetes como brew.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X