在find命令的末尾,`\;`和`+`之间的区别是什么?

时间:2015-03-31 05:02:06

标签: bash find command-line-interface

这些是用于将制表符转换为空格的bash命令。 这是原始stackoverflow帖子的link

这个在命令末尾使用\;

find /path/to/directory -type f -iname '*.js' -exec sed -ie 's|\t|    |g' '{}' \;

这个使用+代替\;

find /path/to/directory -type f -iname '*.js' -exec sed -ie 's|\t|    |g' '{}' '+'

这两者究竟有什么区别?

1 个答案:

答案 0 :(得分:2)

\;+与bash无关。它是find命令的参数,特别是find的{​​{1}}选项。

-exec使用find -exec将当前文件名传递给指定的命令,使用{}标记命令参数的结尾。需要\;,因为\本身 特殊于bash;通过键入;,您可以传递文字\;字符作为参数。 (您也可以输入;';'。)

";"符号(不需要+因为\对bash不特殊)会导致+使用多个参数而不是一次调用指定的命令,与find类似的方式。

例如,假设当前目录包含2个名为xargsabc的文件。如果输入:

xyz

它两次调用find . -type f -exec echo {} \; 命令,产生这个输出:

echo

如果您改为输入:

./abc
./xyz

然后find . -type f -exec echo {} + 只调用find一次,输出如下:

echo

有关详细信息,请键入./xyz ./abc info find(如果系统上已安装文档),或者您可以在http://www.gnu.org/software/findutils/manual/html_node/find_html/

在线阅读该手册