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?

WAEL
fuente
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.

Jan Marek
fuente
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)

Daniel Cambría
fuente
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.

PhilT
fuente
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. :)

G_Style
fuente
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ó ).

Code Bling
fuente
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
-1

puede favorito:

$ ls -altT / ruta / a / algunos / dir

象 嘉 道
fuente
Como se señaló anteriormente , la -Topción no funcionará con GNU ls(tampoco especificada en POSIX). Además, al proporcionar código como respuesta, es mejor explicar qué hace cada parte de él.
Anthony G - justicia para Monica