Поиск файлов doc, odt и pdf по содержимому

Стандартный

pi@raspberrypi: ~_012

В данной статье я расскажу о поиске нужного слова или фразы в документах .doc, .odt и .pdf. Команды поиска locate, grep и find сами по себе не дадут положительного результата, потому что файлы, которые создавались в текстовых процессорах, они напрямую не смогут прочитать с декодированием.Для этого нам понадобятся следующие утилиты – catdoc, antiword, odt2txt, pdftotext и grep. Так как Grep идет по умолчанию в системе, то установим все недостающие команды одной командой в Терминале:



sudo apt-get update && sudo apt-get install catdoc antiword odt2txt poppler-utils

Ну а теперь по-порядку.

Для более быстрого поиска желательно зайти в Терминале в каталог с файлами, которые нужно найти, хотя бы приблизительно. Например файлы, которые мы будем искать, находятся в каталоге Документы. Тогда чтобы зайти в данный каталог, выполним команду:

cd ~/Документы

Ваш путь может быть другой. Теперь для поиска файлов .doc с искомой фразой нужно выполнить команду в Терминале:

find . -name "*.doc" | while read i; do catdoc "$i" | grep -H --label="$i" -n "Фраза поиска"; done

Также можно произвести поиск в файлах .doc утилитой antiword. Для этого выполняем команду:

find . -name "*.doc" | while read i; do antiword "$i" | grep -H --label="$i" -n "Фраза поиска"; done

Для поиска в файлах .odt (Libre Office, Open Office) выполним команду:

find . -name "*.odt" | while read i; do odt2txt "$i" | grep -H --label="$i" -n "Фраза поиска"; done

Для поиска по .pdf документам нужно учесть один момент. Файлы должны иметь текстовый слой, т.е. текст в этих файлах вы сможете выделить, скопировать. Если PDF файлы создавались из графических форматов (png, jpg и т.д.), то в таких документах поиск будет неудачным. Итак, для поиска в .pdf файлах выполним команду:

find . -name '*.pdf' -exec pdftotext {} - \; | grep "Фраза поиска"

 


Leave a Reply

Статьи