LINUX.ORG.RU

Не нужно

anonymous
()
Ответ на: комментарий от anonymous

Все 100500 (ну пусть меньше) файлов? И кстати, в odt чем грепать =)

praseodim ★★★★★
() автор топика
Ответ на: комментарий от Anoxemian

Ну то есть, чтобы поискать в куче файлов надо писать скрипты, которые ищут, распаковывают zip, ищут там текст, причем с учетом кодировок и т.д.

Блин, неужто нет удобного средства?

praseodim ★★★★★
() автор топика

7z l foo.docx
потом извлекаешь оттуда xml-ку, которая тебе нужна, потом грепаешь её

anonymous
()
Ответ на: комментарий от Anoxemian

Мне нужно просто, чтобы искать в куче файлов сразу с разными притом кодировками.

В общем, проще всего, пока ждал ответа, оказалось запустить винду в VirtualBox и там в FAR поискать. mc не умеет в отличие от far рыться в архивах и сразу с разными кодировками. Между прочим пакета zipgrep в Debian не нашлось

Far для Linux у меня в debian тоже нет, а сразу не поставилось.

Вот как-то так, блин получается.

praseodim ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Мне нужно несколько тысяч файлов просмотреть. Один-два файла мне проще банально открыть в LibreOffice и сделать Ctrl+F чем извращаться.

praseodim ★★★★★
() автор топика

Apache Tika. Там есть command line утилита и ещё сервак в который можно curl’ом забрасывать файлы.

maxcom ★★★★★
()
Ответ на: комментарий от praseodim

Не нашлось, потому что zipgrep это не пакет, а команда из пакета unzip.

Aegir
()
Ответ на: комментарий от maxcom

доброй ночи
вы можете посмотреть, почему движок преобразует два знака минуса подряд в знак тире? Сегодня случайно обнаружил с подачи другого анонимуса (суть проблемы - 99% опций в GNU-style используют два знака минуса)

anonymous
()
Ответ на: комментарий от maxcom

Спасибо, радикальное решение вопроса. Правда для текущих целей оно несколько оверскилл при том, что вроде готовых утилит для выделения текста там нет. Но буду иметь ввиду, реально может пригодиться в будущем.

praseodim ★★★★★
() автор топика

Сам не пробовал но как-то увидел и помню, что есть несколько протухшый https://bitbucket.org/cryanfuse/crgrep/ на Java. Оно даже распознавать текст с изображений умеет.

xaizek ★★★★★
()

Сам не пользовался, но много раз видел, что хвалят эту штуку: https://github.com/phiresky/ripgrep-all

(то есть, самим ripgrep пользуюсь постоянно, именно ripgrep-all не пользовался).

emorozov
()
Ответ на: комментарий от anonymous

Потому что, это не говноплощадка, где ты хоть убейся, поставил три минуса, как привык в латехе, нет, будут три минуса, не тире.

Код надо выделять. А ещё можно экранировать символы. ---

fernandos ★★★
()
Ответ на: комментарий от maxcom

Это не экранирование, а кодблоки, что на самом деле просто дословное или полудословное отображение.

fernandos ★★★
()

Люди, а чем вы грепаете *.docx файлы?

Я не пью метиловый спирт, не засовываю в анус кактус, и уж, конечно, не грепаю docx-файлы. Ну нет у меня любви к BDSM.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от praseodim

Там есть command line утилита которая достает текст из чего угодно. Дальше уже можно использовать обычный grep.

maxcom ★★★★★
()
Ответ на: комментарий от praseodim

Мне нужно несколько тысяч файлов просмотреть

А может Solr?

thesis ★★★★★
()

я как бывший виндузятник, использую DocFetcher с гуем, он жует в том числе .docx

BLOBster ★★★
()
Ответ на: комментарий от praseodim

Тогда это называется «выше», а не «старше».

anonymous
()
Ответ на: комментарий от gremlin_the_red

А почему, собственно? Это текстовые документы, которых может быть огромное кол-во, и разумеется они нуждаются в полнотекстовом поиске. Весьма странно, что вы считаете это извращением, вполне практическая задача для каких-нибудь организаций. Удивительно, что стандартных инструментов для этого нет.

Im_not_a_robot ★★★★★
()

apt install recoll antiword wv

anonymous
()

Посоветовал бы конвертнуть в нормальный формат, но, поскольку в DOC всё равно ничего ценного быть не может, проще удалить этот мусор.

anonymous
()

Все гениальное просто!

В .bashrc прописать функцию docx_search:

docx_search(){ local arg wordfile terms=() root=${root:-/}; for arg; do terms+=(-e "$arg"); done; find 2>/dev/null "${root%/}/" -iname '*.docx' -exec bash -c "$(declare -p terms)"'; for arg; do unzip -p "$arg" 2>/dev/null | grep --quiet --ignore-case --fixed-strings "${terms[@]}" && printf %s\\n "$arg"; done' _ {} +; }


И далее можно «грепать» в текущей директории:

docx_search "Шерше ля фам"


Или с указанием где искать:

root=/home/fedor docx_search "будет ли мир спасен красотой"

beka
()
Ответ на: комментарий от beka

И что оно найдет? Конкретный текст или текст с xml-мусором?

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от beka
file=/path/to/file.docx
unzip -p "$file" | grep -q 'template' && echo "$file"

вот и весь поиск, grep’ом как просил ТС

futurama ★★★★★
()

Люди, а чем вы грепаете *.docx файлы?

Секретаршей. За неимением — бухгалтершей.

mord0d ★★★★★
()
$ cat `which antidocx`
#!/usr/bin/bash

if [[ $# < 1 ]]; then
    echo "Usage: antidocx <file.docx>"
    echo "Outputs to stdout."
    exit 1
fi

7z x -so "$1" word/document.xml | sed -r 's/<\/w:p>/\n/g; s/<[^>]*>//g'
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.