假设我有 2000 个 .ODT 文件。它们的名称是随机数。我该如何搜索,比如说“价格表”?如何找到我需要的文档,而不用逐个打开所有文件并检查它是否正确?
是否有某种程序无需打开文档即可搜索文档中的单词?
答案1
这适用于 openoffice 可以读取的任何内容;我只在这种情况下想要 odt:
find -name \*.odt -exec sh -c 'unoconv --stdout -f text "{}" | grep -i string_to_search_for' \;
答案2
另一种方法是雷科尔 。一旦索引了您的文件,它就会很快找到匹配的文件。还可以在 ODS、ODP 和 PDF 中搜索。效果很好。
答案3
您需要一个全文索引解决方案,它有一个过滤器来支持索引这些文件的全文。
其中一个选项是使用tracker
Ubuntu 中的软件包。您需要安装tracker
并tracker-miner-fs
安装,并且可能还需要tracker-gui
搜索工具 UI。
答案4
使用 apt install 安装 antiword 和 odt2txt。
此代码将在目录中的所有 .doc 和 .odt 文件中搜索可能包含空格的给定字符串:
dgrep (确保使其可执行并放入您的路径中!)
#!/bin/bash
#USE: dgrep this text
#grep for doc files, using antiword
#grep for odt files, using odt2txt
#Run in a given directory with doc / odt files
#string=$1
string=$@
for i in *.doc*
do
antiword $i | grep "$string" > found
if [ -s found ]
then
echo "(("$i"))"
more found
fi
done
for j in *.odt
do
odt2txt $j | grep "$string" > found2
if [ -s found2 ]
then
echo "(("$j"))"
more found2
fi
done
/bin/rm found found2