Ordenar por fecha

17

Original:

23 de enero de 2011 10:42 ALGO 2007.12.20.avi
26 de junio de 2009 ALGO 2009.06.25.avi
12 de febrero de 2010 ALGO 2010.02.11.avi
29 de enero de 2011 09:17 ALGO 2011.01.27.avi
11 de febrero de 2011 20:06 ALGO 2011.02.10.avi
27 de febrero de 2011 23:05 ALGO 2011.02.24.avi

Salida:

27 de febrero de 2011 23:05 ALGO 2011.02.24.avi
11 de febrero de 2011 20:06 ALGO 2011.02.10.avi
29 de enero de 2011 09:17 ALGO 2011.01.27.avi
23 de enero de 2011 10:42 ALGO 2007.12.20.avi
12 de febrero de 2010 ALGO 2010.02.11.avi
26 de junio de 2009 ALGO 2009.06.25.avi

Genere la lista anterior (Original) con:

ls -A -lR | grep "^-" | sed "s/.\{43\}/&\n/" | grep -v "^-" | while read ONELINE; do if echo $ONELINE | cut -d " " -f3 | grep -o '[0-9][0-9]:[0-9][0-9]' > /dev/null 2>&1; then echo $ONELINE | sed "s/.\{7\}/&$(date +%Y) /"; else echo $ONELINE; fi; done

¿Cómo podría obtener la salida donde el archivo más nuevo está en la parte superior?

LanceBaynes
fuente
2
@ user4724: ¿cómo generó yuo la lista?
@ user4724: Eso no genera el mismo tipo de salida para mí que usted tiene - no importa como Gilles tenga la respuesta

Respuestas:

21

En la mayoría de las unidades, lstiene una -topción. Desde la manpágina de mi cuadro de Debian:

-t ordenar por hora de modificación

Pruebe el siguiente comando:

$ ls -lt

Alexander Pogrebnyak
fuente
lo necesito recursivamente, lo siento
LanceBaynes
+ ls -lt listará un directorio completo, si 1 archivo cambia en él.
LanceBaynes
14

¿Es ese un archivo de texto que está tratando de ordenar o está tratando de ver una lista de directorios por fecha? Para este último, use la -tbandera parals . Para el primero, vea en particular el -Mindicador de clasificación de GNU, que se clasifica por abreviaturas de nombre de mes de tres letras. El siguiente comando ordena por las columnas 3ra, 1ra, 2da y 4ta, tratando la segunda clave de clasificación como un nombre de mes.

sort -k 3 -k 1M -k2 -k4 in.txt

Considere siempre usar fechas de estilo japonés / ISO, siempre en el orden AAAA-MM-DD-HH-MM-SS (es decir, el primer ancho de columna constante más significativo). De esta forma, la ordenación por fecha es idéntica a la ordenación lexicográfica.

Gilles 'SO- deja de ser malvado'
fuente
No olvide los ceros a la izquierda en esa sugerencia de formato de fecha. Este es el formato que uso siempre que formateo la cadena yo mismo.
Stolenmoment
@stolenmoment Puede usar espacios en lugar de ceros si no le importan los espacios, el punto importante es una columna constante con. 2018  5 26funciona igual de bien que 2018 05 26(siempre y cuando no pases por un marcado que combina espacios consecutivos ...), lo que no funciona bien es 2018 5 26.
Gilles 'SO- deja de ser malvado'
Sí, evito reflexivamente los espacios en los nombres de archivo, estoy seguro de que puedes adivinar por qué.
Stolenmoment
3

No estoy seguro de si la funcionalidad estaba en el lscomando cuando se hizo la pregunta original, pero ahora puede usar la opción --full-time.

p.ej,

ls -t --full-time 

se ordenará con el tiempo más antiguo en la parte inferior; o si usas:

ls -tr --full-time

entonces revertirá el orden.

Bevan Thomas
fuente
La pregunta es sobre cómo ordenar el archivo por fecha / hora de modificación. La -topción responde a esa pregunta por completo; --full-timeno es realmente relevante
G-Man dice 'reinstalar a Monica'
La única opción -t no le da el año para los archivos modificados dentro de los seis meses, mientras que --full-time le da exactamente eso. También puede usar el estilo de tiempo para formatear un formato de fecha que le guste. por ejemplo, ls -ltr --time-style +% Y-% m-% d \% H:% M:% S
Bevan Thomas
No estoy seguro de cuál es tu punto.  ls -ttampoco le da el modo y el propietario de los archivos, el nombre de host y la versión del sistema operativo, ni el precio del té en China.  ls -tni siquiera muestra la fecha de modificación en absoluto. Pero la pregunta no se trata de mostrar la información del archivo, se trata de ordenar los archivos por fecha de modificación. No estás contribuyendo a la respuesta de la pregunta; está agregando información complementaria agradable de saber. Cuando obtienes 50 puntos de reputación , puedes publicar ese tipo de información como un comentario .
G-Man dice 'reinstalar a Monica'
-3

recursivo ( R) y pausa ( |more)

ls -ltR |more
Henrique
fuente