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

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)


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.


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

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


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.


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.