Работает ли grep с файлами PDF? - PullRequest
3 голосов
/ 22 апреля 2010

Можно ли искать несколько файлов PDF с помощью команды 'grep'. Кажется, это не работает, как люди ищут контент в нескольких файлах PDF?

Ответы [ 7 ]

4 голосов
/ 22 апреля 2010

Ну, PDF - это двоичный формат, и grep может искать двоичные файлы, как если бы они были текстовыми

grep -a

или вы можете просто использовать pdftotext (который поставляется с xpdf) следующим образом:

pdftotext whee.pdf | grep pattern
3 голосов
/ 22 апреля 2010

Вы не упоминаете, какую операционную систему вы используете, но в Mac OS X вы можете использовать mdfind из командной строки:

mdfind -onlyin search/directory/path "kind:pdf search text"
2 голосов
/ 22 апреля 2010

Pdf - это двоичный формат, поэтому его поиск с помощью grep не так полезен.Вы можете искать строки в формате PDF с помощью grep следующим образом:

ls dir_with_pdfs/*.pdf|xargs strings|grep "keyword"

Или вы можете использовать команду pdf2text в PDF, а затем искать результаты с помощью grep.

2 голосов
/ 22 апреля 2010

используйте что-то вроде Solr или клоцен Я думаю, что они могут делать то, что вы хотите.

1 голос
/ 01 марта 2012

Этот инструмент pdfgrep сделает всю работу.Синтаксис похож на grep.Для поиска по нескольким файлам достаточно простого сценария оболочки.Например:

$> ls Documents/*.pdf | xargs pdfgrep -n -H "system"
Documents/2005-DoddGutierrezRO-MAN1.pdf:1: designed episodic memory system
Documents/2005-DoddGutierrezRO-MAN1.pdf:1: how ISAC's episodic memory system is
Documents/2005-DoddGutierrezRO-MAN1.pdf:1: cognitive system employs a combination
....
1 голос
/ 22 апреля 2010

PDF - это двоичный дамп объектов, используемый для отображения страниц.Могут быть некоторые метаданные, которые вы можете получить, но фактический текст страницы находится в потоке Postscript и может кодироваться различными способами.Это также не гарантируется в любом порядке.Вам нужно думать о PDF как о файле векторного изображения, а не о текстовом файле.

Существует небольшая статья, более подробно объясняющая текст в PDF-файлах: http://pdf.jpedal.org/java-pdf-blog/bid/27187/Understanding-the-PDF-file-format-text-streams

0 голосов
/ 06 ноября 2011

Если у вас установлен pdftotext через пакет popplar, попробуйте этот скрипт perl:

#!/usr/bin/perl
my $p = shift;
foreach my $fn (@ARGV) {
    open(F,"pdftotext $fn - |");
    while (<F>) { print "$fn:$_" if /$p/; }
    close(F);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...