findコマンドから重複した-exec式を削除する方法は?

findコマンドから重複した-exec式を削除する方法は?

findを使用して複数のファイル形式を検索するコマンドがありますgrep。たとえば、ディレクトリを除いてファイルから.js文字列を検索するには、次のように入力します。.jsxfoodist

find . -path "./dist" -prune -or -iname "*.js" -exec grep "foo" {} + -or -iname "*.jsx" -exec grep "foo" {} +

-exec各ファイルタイプに対して繰り返さないようにこのコマンドを再構築する方法はありますか?頑張った

find . -path "./dist" -prune -or -iname "*.js" -or -iname "*.jsx" -exec grep "foo" {} +

ただし、これらすべては.jsxファイルのみを.js検索します.jsx

答え1

-or優先順位は(デフォルトコネクタ)より低い-andため、分離の「優先順位」を明示的に上げる必要があります。

find . -path "./dist" -prune -or \( -iname "*.js" -or -iname "*.jsx" \) -exec grep "foo" {} +

関連情報