Автор Гілка: Пошук PDF файлів за вмістом  (Прочитано 2143 раз)

Відсутній nickat

  • Письменник
  • *****
  • дописів: 587
  • Карма: +0/-0
  • Debian user
Скрипт pdfgrep знаходить всі PDF файли, що містять регулярний вираз <regexp>, в каталозі <path> і всіх його підкаталогах. Малі та великі букви в регулярному виразі не розрізняються (приберіть опцію --ignore-case в grep, щоб це змінити).

Pdfgrep:
#!/bin/sh
# Usage: pdfgrep <regexp> <path>

IFS=$'\n'
for I in `find "$2" -iname '*.pdf'`; do
    pdftotext -enc UTF-8 "$I" — \
        | grep --quiet --ignore-case --max-count=1 --regexp="$1" \
        && echo "$I"
done
Вміст тестової директорії:
$ ls -l1h *
-rwxr--r-- 1 207 сер  5 13:55 pdfgrep

My PDFs:
загалом 14M
-rw-rw-r-- 1 8,6M чер  6  2009 Український_правопис_2007.pdf
-rw-r--r-- 1 371K сер  5 13:28 Exercise_1_slides.pdf
-rw-r--r-- 1 670K сер  5 13:28 Exercise_2_slides.pdf
-rw-r--r-- 1 567K сер  5 13:28 Exercise_3_slides.pdf
-rw-r--r-- 1 431K сер  5 13:28 Exercise_4_slides.pdf
-rw-r--r-- 1 472K сер  5 13:28 Exercise_5_slides.pdf
-rw-r--r-- 1 438K сер  5 13:28 Exercise_6_slides.pdf
-rw-r--r-- 1 387K сер  5 13:28 Exercise_7_slides.pdf
Застосування скрипту:
$ ./pdfgrep "mobile ip" .
./My PDFs/Exercise_7_slides.pdf
./My PDFs/Exercise_6_slides.pdf
$ ./pdfgrep "право.*" .
./My PDFs/Український_правопис_2007.pdf

PS: pdftotext — утиліта з пакету утиліт xpdf. В Debian xpdf-utils.
« Змінено: 2010-08-05 23:14:20 від nickat »
Best regards,
nickat

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Пошук PDF файлів за вмістом
« Відповідей #1 : 2010-09-08 14:38:38 »
Імена файлів з пробілами розваляться між циклами і запорять роботу скрипту. Як це вирішити - й досі не знаю ;)
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній nickat

  • Письменник
  • *****
  • дописів: 587
  • Карма: +0/-0
  • Debian user
Re: Пошук PDF файлів за вмістом
« Відповідей #2 : 2010-09-08 14:50:38 »
Імена файлів з пробілами розваляться між циклами і запорять роботу скрипту. Як це вирішити - й досі не знаю ;)
А ви подивіться на приклад, особливо на назву директоії ’My PDFs’.  ;) Рішення знайдете у четвертій строчці коду, пояснення у bash(1), Shell Variables, IFS.
« Змінено: 2010-09-08 14:51:44 від nickat »
Best regards,
nickat

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Пошук PDF файлів за вмістом
« Відповідей #3 : 2010-09-09 09:59:45 »
Flame:
:'( джентушник з Башем облажався - ну де в цьому світі справедливість  :question
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.