灵活运用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:

 

评分:0

我来说两句

日历

« 2024-05-16  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 7346
  • 日志数: 21
  • 建立时间: 2008-07-04
  • 更新时间: 2008-10-10

RSS订阅

Open Toolbar