Linux 带有-exec的find命令不运行-exec命令

Linux 带有-exec的find命令不运行-exec命令,linux,ubuntu,find,exec,rm,Linux,Ubuntu,Find,Exec,Rm,我想编写一个简单的命令来清理项目文件,因此我使用了: find . -type f -name "*.o" -o -name "*.a" -o -name "*.ko" -exec rm '{}' + 奇怪的是,它不起作用。当我删除“-exec rm'{}'+”时,我可以看到它将文件从终端中转储出来,所以看起来我的表达式是正确的。我甚至试着把“{}”+”改成“{}\;”,但这也没用。我还尝试用echo替换rm,但终端中没有显示任何内容。我做错什么了吗 使用Ubuntu 12.04。试着像这样使

我想编写一个简单的命令来清理项目文件,因此我使用了:

find . -type f -name "*.o" -o -name "*.a" -o -name "*.ko" -exec rm '{}' +
奇怪的是,它不起作用。当我删除“-exec rm'{}'+”时,我可以看到它将文件从终端中转储出来,所以看起来我的表达式是正确的。我甚至试着把“{}”+”改成“{}\;”,但这也没用。我还尝试用echo替换rm,但终端中没有显示任何内容。我做错什么了吗


使用Ubuntu 12.04。

试着像这样使用它:

find . -type f \( -name "*.o" -o -name "*.a" -o -name "*.ko" \) -exec rm -f {} \;

当将多个文件与
find
exec
组合使用时,它通常只对最后一个文件名起作用。

你得到了它!非常感谢。这里的措辞有点混乱。分组的需要实际上与
-exec
没有多大关系,更多的是与优先级
find
有关。也就是说,在引入
-或
之前,大多数选项具有相同的优先级,这些选项的存在性较低。因此,
find
会将原始语法视为
(-type f和-name“*.o”)或(-name“*.a”)或(-name“*.ko”和-exec rm'{}+)
+
也比
\
由于
rm
可以将一系列文件名作为参数,因此
find
不必为每个
-exec
生成新的子shell,而且运行速度更快。