カメニッキ

カメとインコと釣りの人です

find-grepで複数のファイル名条件を指定する方法

まずよく使うfind-grep

find . -name "*.txt" -exec grep -i "pattern"

ここで、*.txtだけでなく*.htmlというファイルも検索対象としたい場合に

find . -name "*.txt" -o -name "*.html" -exec grep -i "pattern"

と単純に-oでつなげてもしてもなんのこっちゃエラーが発生してしまいます。

以下のようにすることで実行可能です。

find . \( -name "*.txt" -o -name "*.html" \) -exec grep -i "pattern" {} /dev/null \;

\(と\)の前後には半角スペースが必要です。
末尾の
{} /dev/null \;
はおまじないとでも思っててください。