Cómo encontrar los archivos que se crean en la última hora en Unix

135

Cómo encontrar los archivos que se crean en la última hora en Unix

Ankur
fuente

Respuestas:

213

Si el directorio de búsqueda es srch_direntonces o bien

$ find srch_dir -cmin -60 # change time

o

$ find srch_dir -mmin -60 # modification time

o

$ find srch_dir -amin -60 # access time

muestra los archivos creados, modificados o accedidos en la última hora.

corrección: ctime es para cambiar el tiempo del nodo (aunque no estoy seguro, corríjame)

Sameer
fuente
2
Esto es genial y todo, pero estos indicadores no existen en Solaris findque estoy usando. OP dijo Unix y creo que estos son solo Linux.
jiggy
12
¡El truco es usar valores de tiempo negativos ! No es tan obvio en la página del manual.
sphakka
La respuesta de @jiggy Ayush ofrece un truco (basado en -newer) que debería funcionar en Solaris.
David Moles
3
-cmin NO es tiempo de creación sino tiempo de cambio! acabo de eliminar mi causa de directorio .config en la ejecución de la prueba, no se modificó en los últimos X minutos y cuando lo hice fue ... así que tal vez edite esto ...!
Badmaster
Todavía creo que el primer comentario de ejemplo necesita una revisión. "hora de cambio" es el estado del archivo, no los datos del archivo
KC Baltz
24

Los sistemas de archivos UNIX (generalmente) no almacenan tiempos de creación. En cambio, solo hay tiempo de acceso, tiempo de modificación (datos) y tiempo de cambio (inodo).

Dicho esto, findtiene -atime -mtime -ctimepredicados:

$ man 1 encontrar
...
-tiempo   n
        El primario evaluará como verdadero si el momento del último cambio de
        información de estado del archivo restada del tiempo de inicialización,
        dividido por 86400 (con cualquier resto descartado), es n.
...

Por find -ctime 0lo tanto, encuentra todo lo que ha cambiado el inodo (por ejemplo, incluye la creación de archivos, pero también cuenta el recuento de enlaces y los permisos y el cambio de tamaño de archivo) hace menos de una hora.

efímero
fuente
86400 segundos es un día , no una hora. Por lo tanto, el argumento a -ctimeetc. está en unidades de días en lugar de horas.
Gaylon
12

mira este enlace y luego ayúdate.

el código básico es

#create a temp. file
echo "hi " >  t.tmp
# set the file time to 2 hours ago
touch -t 200405121120  t.tmp 
# then check for files
find /admin//dump -type f  -newer t.tmp -print -exec ls -lt {} \; | pg
ayush
fuente
Gracias, sin embargo, esto solo buscará t.tmp. ¿Qué pasa si quiero encontrar todos los archivos creados en la última hora?
Ankur
2
Ankur: creará un archivo temporal t.tmp y establecerá su tiempo de creación en hace 2 horas ... después de eso buscará en el directorio actual todos los archivos que se crearon después de t.tmp, es decir, en las últimas 2 horas ..
ayush
44
¡¡frio!! Aunque el primer comando no es necesario. touchcrea el archivo si aún no existe.
Amir Uval
5

find ./ -cTime -1 -type f

O

find ./ -cmin -60 -type f

gwecho huang
fuente
3
sudo find / -Bmin 60

De la manpágina:

-Bmin n

Es cierto si la diferencia entre la hora de creación del inodo de un archivo y la hora en que findse inició, redondeada al siguiente minuto completo, es n minutos.

Obviamente, es posible que desee configurar un poco diferente, pero este primario parece la mejor solución para buscar cualquier archivo creado en los últimos N minutos.

sudon't
fuente
find (GNU findutils) 4.6.0no tiene -Bpredicado
blockloop
0

Mira este enlace para más detalles.

Para buscar archivos creados en la última hora en el directorio actual, puede usar -amin

encontrar . -amina -60 -tipo f

Esto encontrará los archivos que se crean en la última 1 hora.

Jamre Ludhi
fuente