如何在 Ubuntu 中搜索包含特定文本的 *.odt 或 *.doc 文件?
我使用grep -rl <text to search for>
,但这只适用于文本文件。
注意:使用 grep 的解决方案(例如 searchmonkey)将不起作用,因为 *.doc 或 *.odt 文件具有特殊格式。
- Recoll 想要索引我的主目录,但我想在特定目录中搜索 *.odt 文件;我不知道如何使用这个工具来做到这一点。
- Searchmonkey 似乎是 grep 的 GUI,正如我所提到的,grep 不适用于 *.doc 或 *.odt 文件。
- Regexxer 也存在同样的问题。
- 与 Recoll 一样,我不知道如何使用此工具在特定目录中搜索 *.odt 文件。
答案1
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-search”,并且使其可执行。
然后运行libre-search your_string
应该列出包含你的字符串. 它不会列出字符串上下文。
unzip -ca "$i" 2>/dev/null
处理不需要的内容。
grep -iq
使搜索不区分大小写。
nl
对输出进行编号。