-exec和xargs的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了-exec和xargs的区别相关的知识,希望对你有一定的参考价值。

-exec和xargs的区别

2010-11-27 星期六 晴朗

当你在命令行执行:

$find . -name ‘core‘ -type f -exec rm {} /;

时,find -exec 命令会对每个匹配的文件执行一个单独的rm操作(execute a separate rm for each one), 正如你手动敲入下面命令:

rm ./bin/core
rm ./source/shopping_cart/core
rm ./backups/core
...

但是使用这种方式,如果有100个文件匹配了,那么就需要启100个进程,一个进程处理一个rm命令。一般来说,其越多进程,意味着越耗性能。我们可以换个思路,我们将要删除文件当作参数传递给rm不就可以了吗?也就是说:

rm ./bin/core
rm ./source/shopping_cart/core
rm ./backups/core
...

改成:

rm ./bin/core ./source/shopping_cart/core ./backups/core

但是前提是后面的命令必须支持多参数。相有些命令,比如unzip,就不支持输入多个jar包,所以必须用-exec。
xargs,顾名思义,是对参数进行处理的命令。它的任务就是将输入行转换成下一个命令的参数列表。因此上面的find -exec命令可以改写成:

find . -name ‘core‘ -type f -print | xargs rm


本文出自 “大鸟地带-点滴积累” 博客,转载请与作者联系!

以上是关于-exec和xargs的区别的主要内容,如果未能解决你的问题,请参考以下文章

管道xargs和-exec的介绍与区别

xargs管道exec区别

exec与xargs区别

find命令处理之exec与xargs区别

linux find查找并拷贝 exec xargs区别

find参数exec管道符|xargs的区别