码迷,mamicode.com
首页 > 其他好文 > 详细

-exec和xargs的区别

时间:2017-05-17 23:40:04      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:-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的区别

标签:-exec和xargs的区别

原文地址:http://09112012.blog.51cto.com/4813132/1926644

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!