grep для текста в файлах * .odt или * .doc? [дубликат]

На этот вопрос уже есть ответ здесь:

Как я могу искать файлы * .odt или * .doc, содержащие определенный текст в Ubuntu?

Я использую grep -rl , но это работает только для текстовых файлов.

Примечание: решение, использующее grep (например, searchmonkey), не будет работать, потому что файлы * .doc или * .odt имеют специальный формат.

From ] Как искать строки внутри файлов в папке?

  • Recoll хочет проиндексировать мой домашний каталог, но я хочу выполнить поиск *.odt файлы в определенных каталогах; Я не мог понять, как это сделать с помощью этого инструмента.
  • Searchmonkey кажется графическим интерфейсом для grep, и, как я уже упоминал, grep не работает с файлами * .doc или * .odt.
  • Regexxer также имеет ту же проблему.

Из Поиск в документах ODT, не открывая их?

  • Как и Recoll, я не мог понять, как искать файлы * .odt в определенных каталогах с помощью этого инструмента.
5
задан 31 July 2017 в 17:05

1 ответ

catdoc кажется, работает рекурсивно на .doc файлы в 16,04: https://superuser.com/questions/330242/how-to-recursively-find-a-doc-file-that-contains-a-specific-word

Нет никакого упоминания о .docx таким образом, необходимо будет полагать что один сами.

Для .ods или .odt файлы, у Вас могла быть следующая любезность сценария kaibob ubuntuforums.org:

#!/bin/bash

find . -type f -name "*.od*" | while read i ; do
   [ "$1" ] || { echo "You forgot search string!" ; exit 1 ; }
   unzip -ca "$i" 2>/dev/null | grep -iq "$*"
   if [ $? -eq 0 ] ; then
      echo "string found in $i" | nl
   fi
done

Скажем, Вы называете это "libre-поиском" и сделали это исполняемым файлом.

Затем выполнение libre-search your_string должен перечислить файлы, содержащие your_string.

unzip -ca "$i" 2>/dev/null заботится о нежелательном содержании.
grep -iq делает поиск нечувствительным к регистру.
nl нумерует вывод.

6
ответ дан 23 November 2019 в 09:12

Другие вопросы по тегам:

Похожие вопросы: