假设find会找到以下文件:
find .
file1
file2
file3
如果使用 -exec /;
(find . -exec ls {} \;
),会执行以下命令
ls file1
ls file2
ls file3
或
ls file1; ls file2; ls file3;
而使用-exec \+
(find . -exec ls {} \+
),会尽可能多的文件名作为参数传递给一个命令:
ls file1 file2 file3
注意:文件名的数量仅受系统最大命令行长度的限制。如果命令超过此长度,该命令将被多次调用。
\;
为find找到的每个文件执行单独的命令。
\+
附加文件,并在所有文件上执行单个命令。
\
是一个转义字符。
使用\
的原因:
因为;
是分隔shell命令的控制符(或&&、||)之一,例如:
command1;command2
find
程序使用;
或 +
来终止由 -exec
调用的 shell 命令。
因此,为了避免特殊的shell字符被解释,需要用反斜杠进行转义,以消除;
的特殊含义