Esto es un poco diferente de la solución de Banthar, pero funcionará con versiones de find
que no soportan -newermt
y se muestra cómo utilizar el comando xargs
, que es una herramienta muy útil.
Puede usar el comando find
para buscar archivos "de cierta edad". Esto encontrará todos los archivos modificados entre 5 y 10 días:
find /directory -type f -mtime -10 -mtime +5
A continuación, buscar los archivos de una cadena:
find /directory -type f -mtime -10 -mtime +5 -print0 |
xargs -0 grep -l expression
También puede utilizar el interruptor -exec
, pero me parece xargs
más legible (y a menudo funcionará mejor también, pero posiblemente no en este caso).
(Tenga en cuenta que la bandera -0
está ahí para que este comando funciona en archivos con espacios incrustados, como this is my filename
.)
actualización para la pregunta en los comentarios
Al proporcionar múltiples expresiones de find
, están unidos juntos. Por ejemplo, si usted pide:
find . -name foo -size +10k
... find
sólo devolverá los archivos que son tanto (a) nombrado foo
y (b) mayor de 10 Kbytes. Del mismo modo, si especifica:
find . -mtime -10 -mtime +5
... find
sólo devolverá los archivos que son (a) Hace más reciente de 10 días y (b) mayor que hace 5 días.
Por ejemplo, en mi sistema en este momento:
$ 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 pido "archivos modificados hace más de 5 días (-mtime +5
) I consiga:
$ find . -mtime +5
./file3
./file2
Pero si pido "archivos modificados hace más de 5 días pero menos de 10 días ag O"(-mtime +5 -mtime -10
), me sale:
$ find . -mtime +5 -mtime -10
./file2
Una pregunta relacionada en Server Fault: http://serverfault.com/q/122824/ 36963 – brandizzi