Busque los últimos archivos modificados en los últimos 2 minutos en su directorio de inicio que contengan una determinada cadena

Busque los últimos archivos modificados en los últimos 2 minutos en su directorio de inicio que contengan una determinada cadena

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 -lsto grepnormalmente habría buscado los nombres de archivos generados mystring. Sin embargo, en este caso, la -Rbandera cambia el comportamiento grepe 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.

  1. Busque los últimos archivos modificados en los últimos 2 minutos en su directorio de inicio

    find ~ -type f -mmin -2
    
  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 findpaso 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 grepa echo greple mostrará lo que ejecuta el findcomando; Esta puede ser una técnica de depuración útil:

    find ~ -type f -mmin -2 -exec echo grep -Fl 'certain String' {} +

Considere correr man findy man grepdescubrir cuáles son las distintas opciones, como -Fy -len grep -Fl, de lo contrario no aprenderá nada del ejercicio que se le ha asignado; solo estás copiando una respuesta.

Respuesta2

En el zshcaparazón:

grep -l -F -i 'string' ~/**/*(.Dmm-2)

... donde **coincide recursivamente en subdirectorios, y donde .Din (.Dmm-2)significa "solo coincide con archivos normales ( .), pero incluye archivos ocultos ( D)", y donde mm-2significa "modificado en los últimos dos minutos".

información relacionada