我在 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
答案3
Grep 应该找到二进制匹配:
find /path/to/dir -name '*.doc' exec grep -l "specificword" {} \;