Как выполнить grep группы файлов в указанном диапазоне времени?

Как выполнить grep группы файлов в указанном диапазоне времени?

Я пытаюсь написать скрипт, используемый на буферном блоке, который делает полный захват пакетов сетевого трафика. Поскольку это для довольно большой сети, мы разбиваем захваты на сегменты по 100 МБ. В моменты большого сетевого трафика, часто в течение одной минуты, у нас будет несколько pcap, которые покрывают этот период.

Итак, я хочу сделать скрипт bash, который позволяет аналитику, который ищет что-то, указать дату и время, а также сколько минут в обе стороны от этого они хотят искать файлы. Очевидно, я могу сделать что-то вроде этого -

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

и так далее, получить каждый результат и выполнить grep каждого файла по отдельности на предмет конкретного ключевого слова, которое я ищу, но я хотел бы иметь возможность выполнить более широкий поиск по всем файлам, созданным в течение определенного периода времени, а затем выполнить grep каждого из них на предмет ключевого слова.

Я не совсем понимаю, как это сделать, но буду признателен за любую помощь.

решение1

Вот некоторые замечательные вещи, которые find(в GNU/Linux) могут вам пригодиться:

Единицы измерения:

  • nточнонунтис
  • -nменьше, чемнединицы
  • +nбольше, чемнединицы -

Что случилось:

  • -atime: последний раздоступ
  • -ctime: изменения насам файл(разрешения, владельцы, …), а не его содержимое
  • -mtime:содержимое файлаизмененный
  • -amin n:нминут возраст
  • -atime n:ндней (24 часа) назад
  • то же самое касается ctime/minи mtime/min)

Таким образом:

  • find -atime -30→ последний доступ менее 30 дней назад
  • find -ctime +5→ более 5 дней назад, изменения в самом файле
  • find -mtime +2 -31→ содержимое файла изменилось более двух дней, но менее 31 дня назад

также - -daystart: после сегодняшнего дня, 0.00ч


Греппинг

find вещи -exec grep {} \;→; последняя часть ( {} \;) имеет важное значение — обратите внимание на один пробел между {}и\;

Параметры -execпозволяют включать другие команды вfind


Также:Почему не следует анализировать выводls

решение2

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

Например-

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

Он найдет в каталоге /opt/WebSphere/AppServer/profiles/application/logs/ файлы, начинающиеся с SystemOut за последние 7 дней, и будет искать строку FileNotFoundException.

Связанный контент