如何递归查找包含特定单词的.doc 文件?

如何递归查找包含特定单词的.doc 文件?

我在 Ubuntu 下使用 bash。

目前,这对于当前目录很有效:

catdoc *.doc | grep "specificword" 

但是我有很多包含 .doc 文件的子目录。

我怎样才能递归搜索“specificword”?

答案1

用于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,但可能有 0.0001% 的可能性是必要的,所以我不再关心。)

答案2

你可能想看看回忆这是 Linux 和 Unix 系统的全文搜索工具,支持多种不同的文档格式。但是,它是基于索引的,也就是说,它必须在实际搜索之前对要搜索的文档进行索引。(感谢 pabouk 指出这一点)。

还有 GUI 和命令行。

查看文档了解更多信息。

答案3

Grep 应该找到二进制匹配:

find /path/to/dir -name '*.doc' exec grep -l "specificword" {} \;

相关内容