Answers:
为了终止/ 调用的shell命令,必须使用;(分号)或+(加号)。-execexecdir
;(分号)或+(加号)之间的区别在于参数如何传递到find的-exec/ -execdir参数中。例如:
using ;将执行多个命令(每个参数分别执行),
例:
$ find /etc/rc* -exec echo Arg: {} ';'
Arg: /etc/rc.common
Arg: /etc/rc.common~previous
Arg: /etc/rc.local
Arg: /etc/rc.netboot
后面的所有自变量
find均被视为命令的自变量。该字符串
{}将替换为当前正在处理的文件名。
using +将执行最少的命令(因为参数组合在一起)。这与xargs命令的工作原理非常相似,因此它将在每个命令中使用尽可能多的参数,以避免超出每行参数的最大限制。
例:
$ find /etc/rc* -exec echo Arg: {} '+'
Arg: /etc/rc.common /etc/rc.common~previous /etc/rc.local /etc/rc.netboot
通过在每个末尾附加每个选定的文件名来构建命令行。
命令中仅
{}允许的一个实例。
也可以看看:
鉴于命令find得到以下三个文件:
fileA
fileB
fileC
如果您使用-exec加号(+),
find . -type f -exec chmod 775 {} +
这将是:
chmod 775 fileA fileB fileC
通过在每个末尾附加每个匹配的文件名来xargs构建命令行,这与构建其命令行的方式相同。该命令的调用总数(chmod在这种情况下为)将远远少于匹配文件的数量。
如果您使用-exec分号(;),
find . -type f -exec chmod 775 {} \;
这将是:
chmod 775 fileA
chmod 775 fileB
chmod 775 fileC
man find(1)了详细描述,任何人都可以轻松找到它。别偷懒