我们看看exec和xargs都是如何传参数的。首先看看exec:
ls
index.skin1 skin1
find -type f -exec echo file {} ;
file ./skin1
file ./index.skin1
很明显,exec是对每个找到的文件执行一次命令,除非这单个的文件名超过了几k,否则不会出现命令行超长出错的问题。
我们再看看xargs:
ls
index.skin1 skin1
find -type f | xargs echo
./skin1 ./index.skin1
这里大家看到,xargs是把所有找到的文件名一股脑的转给命令
-exec的缺点是每处理一个文件/目录,都要启动一次命令,效率不好; 格式麻烦,必须用 {} 做文件的代位符,必须用 ; 作为命令的结束符;