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

3

Estou tentando escrever um script usado em uma caixa de buffer que faz a captura total de pacotes de tráfego de rede. Como é para uma rede bastante grande, dividimos as capturas em segmentos de 100MB. Em alturas de tráfego de rede muitas vezes durante um período de um minuto, teremos várias pcaps que cobrem esse período.

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

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

e assim por diante, obtém cada resultado e grep cada arquivo individualmente para a palavra-chave específica que estou procurando, mas eu gostaria de poder fazer uma pesquisa mais ampla para todos os arquivos criados dentro de um intervalo de tempo e depois grep cada deles para a palavra-chave.

Não sei bem como fazer isso, qualquer ajuda seria apreciada.

    
por Steve 01.12.2013 / 03:21

2 respostas

1

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

Unidades:

  • n exactamente n untis
  • -n less than n unidades
  • +n mais do que n unidades -

O que aconteceu:

  • -atime : última vez que acessou
  • -ctime : alterações no próprio arquivo (permissões, proprietários,…), não no seu conteúdo
  • -mtime : o conteúdo do arquivo foi alterado
  • -amin n : n minutos de idade
  • -atime n : n dias (24 horas) atrás
  • o mesmo vale para ctime/min e mtime/min )

Assim:

  • find -atime -30 → acessado pela última vez há menos de 30 dias
  • find -ctime +5 → mais de 5 dias atrás, alterações no próprio arquivo
  • find -mtime +2 -31 → conteúdo do arquivo alterado em mais de dois dias, mas menos de 31 dias atrás

também  - -daystart : depois de hoje, 0.00h

Grepping

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

As opções -exec permitem incorporar outros comandos em find

Além disso: Por que não se deve analisar a saída de ls

    
por 02.12.2013 / 13:41
1

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

Por ex -

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

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

    
por 23.12.2013 / 21:18