пятница, 4 августа 2023 г.

Как поискать регулярками по куче файлов

Возникла ситуация, когда надо было найти все запуски задачи в логах. За несколько лет... Тогда как раз были длинные выходные, так что я интереса ради запустила греп (виртуалка линуксовая):


grep "myTaskPerformer"

 

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

А потом пришел коллега и показал другую команду, которая выполнилась почти моментально. Правда, я искала по всем логам, забыв, что нужное мне вынесено в task-логи. 

Так что он:

  • добавил ограничение по названиям файлов, искал среди меньшего количества в итоге
  • греп тоже изменил, добавив больше уточнения в поисковую фразу
Итоговая команда:


find /opt/jboss/standalone/log -name task* | sort -h | xargs grep "myTaskPerformer: processed" > /tmp/logs.txt


В итоге моя команда подвисла и через 4 дня ещё думала (робот локально быстрее отработал).

Его команда сработала моментально. Пожалуй, запишу себе её на будущее =)


1 комментарий:

  1. рекомендую опцию -r
    grep -r your_text_to_be_found_in_files

    можно с опцией --include="task*"

    grep -r "myTaskPerformer: processed" --include="task*"

    ОтветитьУдалить