这些是用于将制表符转换为空格的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' '{}' '+'
这两者究竟有什么区别?
答案 0 :(得分:2)
\;
或+
与bash无关。它是find
命令的参数,特别是find
的{{1}}选项。
-exec
使用find -exec
将当前文件名传递给指定的命令,使用{}
标记命令参数的结尾。需要\;
,因为\
本身 特殊于bash;通过键入;
,您可以传递文字\;
字符作为参数。 (您也可以输入;
或';'
。)
";"
符号(不需要+
因为\
对bash不特殊)会导致+
使用多个参数而不是一次调用指定的命令,与find
类似的方式。
例如,假设当前目录包含2个名为xargs
和abc
的文件。如果输入:
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/