web-dev-qa-db-ja.com

特定の単語を含む.docファイルを再帰的に見つける方法は?

私はUbuntuでbashを使用しています。

現在、これは現在のディレクトリでうまく機能します。

catdoc *.doc | grep "specificword" 

しかし、.docファイルを含むサブディレクトリがたくさんあります。

たとえば、「特定の単語」を再帰的に検索するにはどうすればよいですか?

9
Tom

再帰検索には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を使用しますが、必要になる可能性が.0001%である可能性があるため、気にすることをやめました。)

11
user1686

recoll は、さまざまなドキュメント形式をサポートするLinuxおよびUnixシステム用の全文検索ツールです。ただし、これはインデックスベースです。つまり、実際の検索の前に、検索するドキュメントにインデックスを付ける必要があります。 (これを指摘してくれたpaboukに感謝します)。

GUIとコマンドラインもあります。

詳細については、 ドキュメント を参照してください。

5
Robert Jakob

Grepは、次のバイナリ一致を見つける必要があります。

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