灵活运用find -exec和xargs
上一篇 /
下一篇 2008-07-15 10:41:45
exec 与 xargs的区别
xargs:通过缓冲方式并以前面命令行的输出作为参数,随后的命令调用该参数
若忽略 xargs 的 options 来看的话,
cm1 | xargs cm2
可以单纯看成: cm2 `cm1`
因此, find .... | xargs rm 也可作 rm `find ...` 来处理.
然而, 若 find 的结果太多, 可能会超过rm 可能接受的最大argument数量而失败.
xargs优点:由于是批处理的,所以执行效率比较高(通过缓冲方式)
xargs缺点:有可能由于参数数量过多(成千上万),导致后面的命令执行失败
若换成 find ....-execrm {} \; 的话,
因为rm 是"逐个" item 去处理的, 则无此忧虑
例子:(在当前目录下查找包含hello字符的文件)
1。最傻方法:grep hello * */* */*/*
2。使用exec
[admin@b2b_search_115 test]$ find . -type f -print -exec grep "hello" {} \;
./file/test3
hello
./test1
hello
./test2
3。使用xargs
[admin@b2b_search_115 test]$ find . -type f -print | xargs grep hello
./file/test3:hello
./test1:hello
收藏
举报
TAG: