Como fazer grep em um grupo de arquivos dentro de um intervalo de tempo?

Como fazer grep em um grupo de arquivos dentro de um intervalo de tempo?

Estou tentando escrever um script usado em uma caixa de buffer que faz a captura completa de pacotes do tráfego de rede. Como se trata de uma rede bastante grande, dividimos as capturas em segmentos de 100 MB. Em momentos de alto tráfego de rede, muitas vezes durante um período de um minuto, teremos vários pcaps que cobrem esse período.

Então, o que eu quero fazer é ter um script bash que permita ao analista que está procurando algo especificar uma data e hora e quantos minutos de cada lado ele deseja procurar por arquivos. Obviamente posso fazer algo assim -

ls -al | grep "Dec  1" | grep 02:00
ls -al | grep "Dec  1" | grep 02:01

e assim por diante, obtenha cada resultado e faça o grep de cada arquivo individualmente para a palavra-chave específica que estou procurando, mas gostaria de poder fazer uma pesquisa mais ampla para todos os arquivos criados dentro de um intervalo de tempo e, em seguida, usar o grep para cada um deles. a palavra-chave.

Não tenho muita certeza de como fazer isso, qualquer ajuda seria apreciada.

Responder1

Algumas das coisas boas find(no GNU/Linux) podem fazer por você:

Unidades:

  • nexatamentenaté
  • -nmenor quenunidades
  • +nmais do quenunidades -

O que aconteceu:

  • -atime: última vezacessado
  • -ctime: alterações emarquivo em si(permissões, proprietários, …), não o seu conteúdo
  • -mtime:conteúdo do arquivomudado
  • -amin n:nminutos de idade
  • -atime n:ndias (24 horas) atrás
  • o mesmo vale para ctime/mine mtime/min)

Por isso:

  • find -atime -30→ último acesso há menos de 30 dias
  • find -ctime +5→ há mais de 5 dias, alterações no próprio arquivo
  • find -mtime +2 -31→ o conteúdo do arquivo foi alterado há mais de dois dias, mas há menos de 31 dias

também - -daystart: depois de hoje, 0h00


Grepping

find coisa -exec grep {} \;→; a última parte ( {} \;) é essencial - lembre-se do único espaço em branco entre {}e\;

As -execopções permitem incorporar outros comandos emfind


Também:Por que não se deve analisar a saída dels

Responder2

find -iname "" -mtime -7 -exec zgrep "" {} \;

Por ex-

find /opt/WebSphere/AppServer/profiles/application/logs/ -iname "SystemOut*" -mtime -7 -exec zgrep "FileNotFoundException" {} \;

Ele encontrará no diretório /opt/WebSphere/AppServer/profiles/application/logs/ arquivos começando com SystemOut nos últimos 7 dias e procurará por String FileNotFoundException.

informação relacionada