На этот вопрос уже есть ответ здесь:
Как я могу искать файлы * .odt или * .doc, содержащие определенный текст в Ubuntu?
Я использую grep -rl
, но это работает только для текстовых файлов.
Примечание: решение, использующее grep (например, searchmonkey), не будет работать, потому что файлы * .doc или * .odt имеют специальный формат.
From ] Как искать строки внутри файлов в папке?
Из Поиск в документах ODT, не открывая их?
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
нумерует вывод.