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

Вам также может потребоваться установить пакет libspeexdsp-dev (который зависит от libspeex-dev):

sudo apt-get install libspeexdsp-dev
3
задан 1 August 2017 в 03:05

3 ответа

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

Нет упоминания о .docx, поэтому вам нужно будет понять это.

Для файлов .ods или .odt вы можете иметь следуя приветствию сценария https://superuser.com/questions/330242/how-to-recursive-find-a-doc-file-that-contains-a-specific-word :

#!/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-search» и сделали его исполняемым.

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

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

3
ответ дан 22 May 2018 в 20:17
  • 1
    Можно также преобразовать файлы ODT / S / P в PDF с помощью unoconv, затем использовать pdfgrep. – Andrea Lazzarotto 23 July 2017 в 15:36
  • 2
    Это выглядит многообещающе. Я попробую и прокомментирую. – PJ Singh 24 July 2017 в 04:30
  • 3
    @Andrea Lazzarto, твоя идея тоже звучит неплохо. В моем конкретном случае у меня есть сотни файлов в структуре каталогов, поэтому я бы не хотел их преобразовывать. Однако вы должны отправить свое предложение в качестве ответа, потому что это может быть полезно для кого-то другого, ищущего эту тему. – PJ Singh 1 August 2017 в 05:17
  • 4
    @ DK Bose, ваше решение работало лучше всего из тех, что я пытался (из альтернативных вопросов выше). У некоторых ошибок в процессе распаковки некоторые файлы возникали, но это могло быть связано с поврежденными файлами. Мне нравится, что ваше решение основано на командной строке, оно может работать с произвольным каталогом, оно может быть написано сценарием для поиска по дереву каталогов и что он не требует, чтобы я индексировал все мои файлы. – PJ Singh 1 August 2017 в 05:20
  • 5
    Я немного изменил код, чтобы удалить распакованные ошибки и сделать поиск нечувствительным. – DK Bose 4 February 2018 в 10:41

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

Нет упоминания о .docx, поэтому вам нужно будет понять это.

Для файлов .ods или .odt вы можете иметь следуя приветствию сценария https://superuser.com/questions/330242/how-to-recursive-find-a-doc-file-that-contains-a-specific-word :

#!/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-search» и сделали его исполняемым.

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

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

4
ответ дан 18 July 2018 в 09:51

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

Нет упоминания о .docx, поэтому вам нужно будет понять это.

Для файлов .ods или .odt вы можете иметь следуя приветствию сценария https://superuser.com/questions/330242/how-to-recursive-find-a-doc-file-that-contains-a-specific-word :

#!/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-search» и сделали его исполняемым.

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

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

4
ответ дан 24 July 2018 в 19:27

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

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