ver ultimos ultimo por numero modificado modificacion mes listar fecha creados creacion buscar borrar archivos archivo linux ubuntu find grep date-range

ultimos - ultimo archivo modificado linux



Grep dentro de todos los archivos creados dentro del rango de fecha (3)

Combina grep con find :

find -newermt "28 May 2012" -not -newermt "30 May 2012" -exec grep XYZ /{/} /;

Estoy en el sistema operativo Ubuntu. Quiero grep una palabra (digamos XYZ) dentro de todos los archivos de registro que se crean dentro del rango de fecha 28-may-2012 a 30-may-2012.

¿Cómo puedo hacer eso?


find que no hay opciones donde pueda especificar fechas específicas para la comparación de la marca de tiempo (al menos la versión en mi computadora portátil no la tiene - puede haber otras versiones y / u otras herramientas que funcionen de manera similar), por lo que tendrá que Usa el número de días. Por lo tanto, a partir del 2012/06/05, desea buscar archivos con más de 9 días pero con más de 6 días:

find . -type f -ctime -9 -ctime +6 -print0 | xargs -0 grep XYZ


Esto es un poco diferente de la solución de Banthar, pero funcionará con versiones de find que no son compatibles con -newermt y muestra cómo usar el comando xargs , que es una herramienta muy útil.

Puede utilizar el comando find para localizar archivos "de cierta edad". Esto encontrará todos los archivos modificados entre 5 y 10 días atrás:

find /directory -type f -mtime -10 -mtime +5

Para luego buscar esos archivos por una cadena:

find /directory -type f -mtime -10 -mtime +5 -print0 | xargs -0 grep -l expression

También puede usar el conmutador -exec , pero encuentro que xargs más legible (y a menudo también tendrá un mejor desempeño, pero posiblemente no en este caso).

(Tenga en cuenta que el -0 está ahí para permitir que este comando opere en archivos con espacios incrustados, como this is my filename ).

Actualización para pregunta en comentarios.

Cuando proporciona varias expresiones para find , se unen con AND. Por ejemplo, si usted solicita:

find . -name foo -size +10k

... find solo devolverá archivos que (a) se foo y (b) tengan más de 10 kbytes. Del mismo modo, si especifica:

find . -mtime -10 -mtime +5

... find solo devolverá los archivos que son (a) más nuevos que hace 10 días y (b) más antiguos que hace 5 días.

Por ejemplo, en mi sistema es actualmente:

$ date Fri Aug 19 12:55:21 EDT 2016

Tengo los siguientes archivos:

$ ls -l total 0 -rw-rw-r--. 1 lars lars 0 Aug 15 00:00 file1 -rw-rw-r--. 1 lars lars 0 Aug 10 00:00 file2 -rw-rw-r--. 1 lars lars 0 Aug 5 00:00 file3

Si solicito "archivos modificados hace más de 5 días ( -mtime +5 ) obtengo:

$ find . -mtime +5 ./file3 ./file2

Pero si pido "archivos modificados hace más de 5 días pero hace menos de 10 días" ( -mtime +5 -mtime -10 ), obtengo:

$ find . -mtime +5 -mtime -10 ./file2