Mostrar el año al enumerar archivos en el directorio actual


58

Estoy trabajando en un servidor Red Hat. Los comandos ls -lo llme dan la fecha y la hora en formato +"%b %-d %H:%M".

Quiero enumerar los archivos de manera que el año en que se creó cada archivo aparezca dentro de la fecha.

¿Cómo es eso posible?


no, no creo que intente "ls -lT" no se encuentra
WAEL

1
ls -lTes para mac osx
Kris Roofe

1
En general, Unix no realiza un seguimiento de los tiempos de creación de archivos e, incluso cuando lo hace, lsgeneralmente no tiene una forma de mostrarlo. Entonces, en general, esto es imposible.
G-Man dice 'reinstalar a Mónica' el

Respuestas:


86

Puede usar man lsy aquí puede encontrar el --time-styleparámetro. O puedes usar:

ls --full-time.


1
@bob: Estoy completamente de acuerdo con Turco. Si no haces eso, nadie se molestará en responder tu pregunta.
The Dark Knight

55
Ejemplo de estilo de tiempols -l --time-style=+%F
sobi3ch

1
Para aquellos que ya se han llestablecido como ls -lao algo más, ll --full-timetambién funcionan.
Meetai.com

8

ls -lmostrará el día del mes y el año , ya que , de acuerdo con la página de manual de BSD: Si el tiempo de modificación del archivo es más de 6 meses en el pasado o en el futuro, se muestra el año de la última modificación en lugar de los campos de hora y minuto .

Entonces, para asegurarse de que ese año siempre se muestre, use:

ls --time-style=long-iso (GNU / Linux)

ls -lT mostrará la información de tiempo completo en BSD (MacOS)


6

Como solicitó el año, ls -laces fácil recordar si, como yo, lo usa ls -latodo el tiempo. Le cda ctime, que mostrará un año si no es el año actual o la hora y los minutos si lo es.


Me gusta esto. Mucho menos ruido en la salida y solo una letra para recordar en el futuro.
Eric

1
Esto parece cambiar el comportamiento de lshasta la fecha cambiada en lugar de la fecha predeterminada modificada .
Mateen Ulhaq

2
ls -lmuestra la fecha y la hora de las fechas de los últimos seis meses, y la fecha y el año de otras fechas. ctime puede estar en los últimos seis meses tanto como mtime (fecha de modificación), por lo que ls -lacpuede mostrar tiempos (en lugar de años) tanto como ls -lapueda. Además, como señala Mateen Ulhaq, ls -lacno muestra las mismas fechas que ls -lasí. Esta respuesta es incorrecta.
G-Man dice 'reinstalar a Mónica' el

2
¿Cómo demonios obtuvo esta "respuesta" siete votos?
G-Man dice 'reinstalar a Mónica' el

5

Además de la respuesta de Jan Marek ... He notado que puedes salirte con la tuya solo con:

ls --full o ls --fu

que hará lo mismo que ls --full-timeél describió. Gracias Stéphane Chazelas. Ahora escribo en ls --futodas partes. :)


1
O ls --fu. Las opciones largas de estilo GNU se pueden abreviar siempre que no haya ambigüedad ( --fno funcionaría, ya que también hay un tipo de archivo y un formato). Tenga en cuenta que una versión futura puede presentar una, --full-permspor lo que es peligroso confiar en eso.
Stéphane Chazelas

1
¡Genial saber! Se trata de escribir menos. :)
G_Style

2

Si está utilizando busybox(distribuciones incrustadas, por ejemplo, OpenWRT, LEDE), el interruptor que está buscando es -epara versiones hasta 1.26.2 y --full-timepara 1.27.0 y superior (consulte la confirmación que lo cambió ).


1
-etambién funciona con Solaris lsy ast-open, por lo que en realidad está más cerca de un estándar que GNU --full-time. Una pena que busybox lo eliminó en versiones más nuevas.
Stéphane Chazelas

@ StéphaneChazelas no lo sabía! Gracias por la edición
Código Bling

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.