Я использую Bash под Ubuntu.
В настоящее время это работает хорошо для текущего каталога:
catdoc *.doc | grep "specificword"
Но у меня есть много подкаталогов с файлами .doc.
Как я могу найти, скажем, "конкретное слово" рекурсивно?
Используйте find
для рекурсивных поисков:
find -name '*.doc' -exec catdoc {} + | grep "specificword"
Это также выведет имя файла:
find -name '*.doc' | while read -r file; do
catdoc "$file" | grep -H --label="$file" "specificword"
done
(Обычно я использую find ... -print0 | while read -rd "" file
, но есть вероятность, что это будет .0001%, поэтому я перестал заботиться.)
Возможно, вы захотите взглянуть на recoll, который представляет собой инструмент полнотекстового поиска для систем Linux и Unix, поддерживающий множество различных форматов документов. Однако он основан на индексе, т. Е. Он должен индексировать документы, в которых вы хотите выполнить поиск, до фактического поиска. (Спасибо Пабуку за указание на это).
Есть графический интерфейс и командная строка тоже.
Смотрите документацию для получения дополнительной информации.
Grep должен найти двоичные совпадения с:
find /path/to/dir -name '*.doc' exec grep -l "specificword" {} \;