如何在 find 命令中删除重复的 -exec 表达式?

如何在 find 命令中删除重复的 -exec 表达式?

我有一个find使用 . 搜索多种文件类型的命令grep。例如,如果要在文件中搜索.js字符串.jsxfoo同时排除dist目录,我可以输入:

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" {} +

相关内容