Линукс, Vim, LaTeX, полезные скрипты, визуализация данных, численные расчёты, немного ФП

20080715

pdfgrep: поиск слов по PDF файлам

Дано: куча PDF файлов (разные статьи).
Найти: те из них, в которых упоминаются определённые ключевые слова.

Я привык grepать по текстовым файлам в поисках нужного слова или сочетания слов. Вот только grep шаблон файл.pdf ничего не находит. «Не беда,» — решил я и написал обвязку для grep, которая конвертирует PDF в простой текст с помощью pdftotext и ищёт уже в нём, а имя файла показывает исходное.

Получился у меня вот такой скрипт pdfgrep. Запускать можно, например, так:
$ pdfgrep --color=always -i '(navier[- ]){0,1}stokes' *.pdf
Конечно, стоило мне собраться написать об этом в блог и поискать в интернете — как оказалось, что я не первый, кто такой скрипт написал. Вот практически идентичные скрипты: pdfgrep-1 и pdfgrep-2… В общем, идея понятна.

2 коммент.:

  1. Сергей, идея с grep интересная, но эту же проблему лично я решал с помощью SEARCH++

    Получается что-то вроде персональной поисковой системы: сначала делаем из PDF текстовики, индексируем их index++, а потом ищем search++.

    Что-то вроде этого.

    ОтветитьУдалить
  2. За ссылку на заметку про поиск с помощью SWISH++ спасибо. Именно про него я никогда не слышал, но попытки использовать Beagle или Tracker (других локальных поисковиков) мне не понравились:

    1) индексатор или должен работать постоянно (и тормозить систему хуже антивируса), или же часть файлов не будет проиндексирована
    2) мне удобнее подождать пока по файлам пройдётся grep, в момент, когда мне это нужно, чем постоянно терпеть тормоза на ноутбуке, от работы индексатора
    3) локальные поисковики всё равно не понимают все нужные мне типы файлов, а писать к ним плагины лень

    Да, кстати, вроде бы и Tracker, и Recoll, и Strigi умеют напрямую индексировать PDF (не нужно готовить текстовые файлы вручную).

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