¿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.

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

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

Dejan
fuente
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

F. Hauri
fuente
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

Layer8
fuente
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)

simhumileco
fuente
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
pbies
fuente
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
lfender6445
fuente
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.

bbarker
fuente
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