-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的区别的主要内容,如果未能解决你的问题,请参考以下文章