¿Cómo puedo ordenar la salida de 'ls' por última fecha de modificación?


Respuestas:


1637
ls -t

o (para el reverso, el más reciente en la parte inferior):

ls -tr

La lspágina del manual describe esto con más detalles y enumera otras opciones.


312
ls -haltes de human readable, show hidden, print details, sort by date.
Evgeni Sergeev

66
En caso de que alguien se pregunte, los argumentos -ty -rse especifican en la sección sobre lsen el estándar POSIX , por lo que deberían ser compatibles en todos los Unices.
Mark Amery

55
ls -lltpara mostrar la marca de fecha y hora junto con la clasificación
Harshul Pandav

44
Sí, es posible
Ashraf.Shk786

66
@EvgeniSergeev ¡NO MEMORIZES ls -haltun simple tipo incorrecto puede hacer que tu servidor se bloquee! linux.die.net/man/8/halt
Isaac

148

Prueba esto: ls -ltr. Le dará el reciente al final de la lista.


Utilicé esto para obtener la lista de archivos en mi repositorio Git por su última fecha de edición. ls -alt $(git ls-files -m)¡Gracias!
NobleUplift

45

Para una respuesta completa, esto es lo que uso: ls -lrth

Ponga esto en su script de inicio /etc/bashrcy asigne un alias como este: alias l='ls -lrth'reinicie su terminal y debería poder escribir ly ver una larga lista de archivos.


14
También puede llamar source /etc/bashrcsi desea agregarlo a su repertorio mientras se ejecuta.
cwallenpoole

1
También puede agregarlo ~/.bash_aliasessolo para su usuario (uno puede crear el archivo si aún no existe
Dinei

29

A veces uso esto:

find . -type f -mmin -5 -print0 | xargs -0 /bin/ls -tr

o

find . -type f -mmin -5 -print0 | xargs -0 /bin/ls -ltr

para mirar recursivamente sobre qué archivos se modificaron en los últimos 5 minutos.

... o ahora, con la versión reciente de GNU encontrar :

find . -type f -mmin -5 -exec ls -ltr {} +

... e incluso para no limitarse a los archivos :

find . -mmin -5 -exec ls -ltrd {} +

(tenga en cuenta el -dcambio a lspara no mostrar el contenido de los directorios)

¿Forma más robusta?

Echa un vistazo a mi respuesta para encontrar y ordenar por fecha de modificación


Por recursivo te refieres a que enumera todos los archivos en subdirectorios, ¿no tiene ya un interruptor para hacer eso?
jiggunjer

@jiggunjer ls -Rltrordenará por directorio, luego por fechas, find -type f -mmin -5 -exec ls -ltr {} +solo imprimirá los archivos modificados en los últimos 5 minutos, ordenados por fecha, independientemente del árbol de directorios.
F. Hauri

Tenga en cuenta que esto no funcionará si la lista de archivos es demasiado larga para pasarla como una invocación de shell a ls( unix.stackexchange.com/a/118200/27186 ); entonces verá un grupo ordenado de archivos y luego otro ordenó un montón de archivos, etc. pero no se ordenará toda la lista. Visite superuser.com/questions/294161/… para ordenar listas más largas con find.
Martillo

@unhammer Tienes razón, para que esto funcione de manera segura, mira mi respuesta reciente a Unix / Linux para encontrar y ordenar por fecha de modificación
F. Hauri

20

Añadir:

alias lt='ls -Alhtr'

en $homedir/.bashrc


15

Mnemotécnico

Para no ignorar las entradas que comienzan con .y ordenar por fecha (la más nueva primero):

ls -at

Para no ignorar las entradas que comienzan con .y ordenar por fecha inversa (la más antigua primero):

ls -art

Para no ignorar las entradas que comienzan con ., use un formato de listado largo y ordene por fecha (la más nueva primero):

ls -alt

Para imprimir tamaños legibles por humanos, no ignore las entradas que comienzan con ., use un formato de listado largo y ordene por fecha (la más nueva primero) (nota @EvgeniSergeev):

ls -halt

pero tenga cuidado con el último , porque un tipo incorrecto simple puede causar un bloqueo del servidor ... (@Isaac note)


14

Encuentre todos los archivos en el sistema de archivos que se modificaron al máximo 3 * 24 horas (3 días) hasta ahora:

find / -ctime 3

10

Para mostrar los 10 más recientes ordenados por fecha, uso algo como esto:

ls -t ~/Downloads | head -10

o para mostrar más viejo

ls -tr ~/Downloads | tail -10

da ls -t head -2y ls -tr | tail -2da el mismo resultado, la opción (-t / -tr) debe mantenerse fija y modificada la cola / cabeza o viceversa, modificar ambos es como no cambiar nada
DDS

7

Usando solo comandos Unix muy básicos:

ls -nl | sort -k 8,8n -k 6,6M

Esto funcionó en Linux; la columna 8 es "n" (numérica), la columna 6 es "M", mes.

Soy nuevo en sort, por lo que esta respuesta probablemente podría mejorarse. Sin mencionar que necesita opciones adicionales lsy sortusar marcas de tiempo exactas, pero no todos necesitarán esto.


55
Sospecho que su respuesta no ha recibido ninguna califican-up, ya que analiza la salida de ls - véase el argumento canónica no hacerlo y esta pregunta acerca de no analizar ls
Eponymous