我有一个find
使用 . 搜索多种文件类型的命令grep
。例如,如果要在文件中搜索.js
字符串.jsx
,foo
同时排除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" {} +