Procure os últimos arquivos modificados nos últimos 2 minutos em seu diretório inicial que contenham uma determinada string

Procure os últimos arquivos modificados nos últimos 2 minutos em seu diretório inicial que contenham uma determinada string

Estou procurando arquivos em meu diretório inicial que foram modificados nos últimos dois minutos e que também contêm uma determinada string. Eu tentei com este comando:

 find -type d -mmin -2 -ls | grep -Ril "mystring" 

Parece funcionar, mas aparentemente imprime apenas os arquivos com a string fornecida, em vez dos arquivos modificados pela última vez há 2 minutos contendo a string. Parece que a primeira parte do comando não foi executada.

Responder1

Você fez uma boa tentativa com sua própria sugestão

find -type d -mmin -2 -ls | grep -Ril "mystring"

Isso teria identificado diretórios ( -type d) que foram modificados nos últimos dois minutos, em vez de arquivos ( -type f). Canalizar a saída de -lsto grepnormalmente teria pesquisado os nomes dos arquivos gerados por mystring. No entanto, neste caso, o -Rsinalizador altera o comportamento grepe ignora sua lista de nomes de arquivos, pesquisando em cada arquivo no diretório atual e abaixo dele.

Então, vamos dividir o problema em duas partes

  1. Pesquise os últimos arquivos modificados nos últimos 2 minutos em seu diretório inicial

    find ~ -type f -mmin -2
    
  2. [Arquivos] que contêm uma determinada String

    grep -Fl 'certain String' {files...}
    

Agora você precisa colocá-los juntos. O {}é um espaço reservado para os nomes de arquivos gerados pela findetapa 1 e o final +indica que {}pode ser repetidovárias vezes, ou seja, vários nomes de arquivos

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

Alterar greppara echo grepmostrará o que está sendo executado pelo findcomando; esta pode ser uma técnica de depuração útil:

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

Por favor, considere correr man finde man grepdescobrir quais são as várias opções, como o -Fe -lem grep -Fl, caso contrário você não aprenderá nada com o exercício que lhe foi definido; você está apenas copiando uma resposta.

Responder2

Na zshcasca:

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

... onde **corresponde recursivamente em subdiretórios e onde .Din (.Dmm-2)significa "corresponde apenas a arquivos normais ( .), mas inclui arquivos ocultos ( D)" e onde mm-2significa "modificado nos últimos dois minutos".

informação relacionada