在 *.odt 或 *.doc 文件中查找文本?

在 *.odt 或 *.doc 文件中查找文本?

如何在 Ubuntu 中搜索包含特定文本的 *.odt 或 *.doc 文件?

我使用grep -rl <text to search for>,但这只适用于文本文件。

注意:使用 grep 的解决方案(例如 searchmonkey)将不起作用,因为 *.doc 或 *.odt 文件具有特殊格式。

如何在文件夹中的文件中搜索字符串?

  • Recoll 想要索引我的主目录,但我想在特定目录中搜​​索 *.odt 文件;我不知道如何使用这个工具来做到这一点。
  • Searchmonkey 似乎是 grep 的 GUI,正如我所提到的,grep 不适用于 *.doc 或 *.odt 文件。
  • Regexxer 也存在同样的问题。

无需打开 ODT 文档即可进行搜索?

  • 与 Recoll 一样,我不知道如何使用此工具在特定目录中搜​​索 *.odt 文件。

答案1

catdoc.doc对于16.04 中的文件似乎以递归方式工作:https://superuser.com/questions/330242/how-to-recursively-find-a-doc-file-that-c​​ontains-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-search”,并且使其可执行

然后运行libre-search your_string应该列出包含你的字符串. 它不会列出字符串上下文。

unzip -ca "$i" 2>/dev/null处理不需要的内容。
grep -iq使搜索不区分大小写。
nl对输出进行编号。

相关内容