Estoy buscando archivos en mi directorio de inicio que se modificaron en los últimos dos minutos y que también contengan una determinada cadena. Intenté con este comando:
find -type d -mmin -2 -ls | grep -Ril "mystring"
Parece funcionar, pero aparentemente imprime solo aquellos archivos con la cadena dada dentro en lugar de los archivos modificados por última vez hace 2 minutos que contienen la cadena. Parece que la primera parte del comando no se ejecuta.
Respuesta1
Tuviste un buen intento con tu propia sugerencia.
find -type d -mmin -2 -ls | grep -Ril "mystring"
Esto habría identificado directorios ( -type d
) que se habían modificado en los últimos dos minutos en lugar de archivos ( -type f
). Canalizar la salida de -ls
to grep
normalmente habría buscado los nombres de archivos generados mystring
. Sin embargo, en este caso, la -R
bandera cambia el comportamiento grep
e ignora su lista de nombres de archivos, buscando en su lugar todos los archivos en el directorio actual y debajo de él.
Entonces, dividamos el problema en dos partes.
Busque los últimos archivos modificados en los últimos 2 minutos en su directorio de inicio
find ~ -type f -mmin -2
[Archivos] que contienen una determinada cadena
grep -Fl 'certain String' {files...}
Ahora necesitas juntarlos. Es {}
un marcador de posición para los nombres de archivos generados por el find
paso 1, y el final +
indica que {}
se puede repetir.varias veces, es decir, varios nombres de archivos
find ~ -type f -mmin -2 -exec grep -Fl 'certain String' {} +
Cambiar grep
a echo grep
le mostrará lo que ejecuta el find
comando; Esta puede ser una técnica de depuración útil:
find ~ -type f -mmin -2 -exec echo grep -Fl 'certain String' {} +
Considere correr man find
y man grep
descubrir cuáles son las distintas opciones, como -F
y -l
en grep -Fl
, de lo contrario no aprenderá nada del ejercicio que se le ha asignado; solo estás copiando una respuesta.
Respuesta2
En el zsh
caparazón:
grep -l -F -i 'string' ~/**/*(.Dmm-2)
... donde **
coincide recursivamente en subdirectorios, y donde .D
in (.Dmm-2)
significa "solo coincide con archivos normales ( .
), pero incluye archivos ocultos ( D
)", y donde mm-2
significa "modificado en los últimos dos minutos".