首页 > 代码库 > -exec和xargs的区别
-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的区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。