Encuentra los archivos que han cambiado en las últimas 24 horas.

265

Por ejemplo, un servidor MySQL se está ejecutando en mi máquina Ubuntu. Algunos datos han sido modificados durante las últimas 24 horas.

¿Qué scripts (Linux) pueden encontrar los archivos que se han cambiado durante las últimas 24 horas?

Enumere los nombres de archivo, los tamaños de archivo y la hora de modificación.

JackWM
fuente
1
Puede usar stackoverflow.com/questions/4561895/…
vaugham el

Respuestas:

479

Para buscar todos los archivos modificados en las últimas 24 horas (último día completo) en un directorio específico en particular y sus subdirectorios:

find /directory_path -mtime -1 -ls

Debe ser de su agrado

Lo -anterior 1es importante: significa que todo cambió hace un día o menos. En cambio, un +antes 1significaría que algo cambió hace al menos un día, mientras que no tener nada antes 1significaría que se cambió hace un día, ni más ni menos.

Xavjer
fuente
17
¡bonito! ¿Qué tal las últimas 2 horas?
JackWM
114
use "-mmin -120" en lugar de mtime
Xavjer
1
¿Por qué -antes del valor numérico?
EsseTi
66
El argumento de -mtime se interpreta como el número de días completos en la antigüedad del archivo. -mtime + n significa estrictamente mayor que, -mtime -n significa estrictamente menor que.
Xavjer
3
Para el lector: no se olvide de eliminarlo -lscuando lo use en un script
redolente el
41

Puedes hacer eso con

find . -mtime 0

De man find:

[El] tiempo desde la última modificación de cada archivo se divide entre 24 horas y el resto se descarta. Eso significa que para que coincida con -mtime 0, un archivo tendrá que tener una modificación en el pasado que sea hace menos de 24 horas.

Miguel
fuente
25

Otra forma más humana:

find /<directory> -newermt "-24 hours" -ls

o:

find /<directory> -newermt "1 day ago" -ls

o:

find /<directory> -newermt "yesterday" -ls
Maxim Egorushkin
fuente
11

En sistemas compatibles con GNU (es decir, Linux):

find . -mtime 0 -printf '%T+\t%s\t%p\n' 2>/dev/null | sort -r | more

Esto mostrará una lista de los archivos y directorios que se han modificado en las últimas 24 horas ( -mtime 0). Los enumerará con la última hora modificada en un formato que sea ordenable y legible por humanos ( %T+), seguido del tamaño del archivo ( %s), seguido del nombre de archivo completo ( %p), cada uno separado por pestañas ( \t).

2>/dev/nulltira cualquier salida stderr, para que los mensajes de error no enturbien las aguas; sort -rordena primero los resultados por la última modificación; y | moreenumera una página de resultados a la vez.

Stephen G Tuggy
fuente
2
También podría usar en | lesslugar de | more, supongo.
Stephen G Tuggy
7

Para otros que lleguen aquí en el futuro (incluido yo mismo), agregue una opción de nombre para encontrar tipos de archivos específicos, por ejemplo: find /var -name "*.php" -mtime -1 -ls

resedarse
fuente
5

Este comando me funcionó

find . -mtime -1 -print
BhandariS
fuente