xargs与exec命令执行效率问题

xargs,exec都是命令传递的过滤器,捕捉前面一个命令的结果,并将其传递到后一个命令。简单点说:

  • exec  要结合{}\;来用, {}表示前面查询的结果\;结束符,这是固定的写法.
  • xargs 要结合 |来操作,在批处理文件时,因缓冲(多线程),所以速度要快些.
  • 传递给exce命令的长度有限制,在某些系统上-exec参数只能调用很少的shell命令.
  • -exec会为find的搜索结果中的每一个文件启动一个CMD进程,而不是把搜索结果作为一个参数文件列表传递给CMD程序,当搜索结构很多时,会严重影响系统性能。xargs CMD则从管道获取的参数作为一个参数列表一次传给CMD程序,效率无疑高了很多!

比如要统计服务器上文件大小在1k,10k,100k之上的文件,将其列出来:

  • 文件大小为100k比较

[root@linux ~]# time -p find / -size +100k | xargs ls -lart {} \;
real 7.29
user 1.31
sys 6.89


[root@nas2ds1 boot]# time -p find / -size +100k -exec ls -lart {} \;
real 31.00
user 6.06
sys 20.88

  • 文件大小为10比较
[root@linux ~]# time -p find / -size +10k | xargs ls -lart {} \;
real 12.43
user 3.96
sys 8.99

[root@linux ~]# time -p find / -size +10k -exec ls -lart {} \;
real 105.14
user 20.38
sys 67.65

  • 文件大小为1k的比较

[root@linux ~]# time -p find / -size +1k | xargs ls -lart {} \;
real 28.62
user 5.72
sys 24.01


[root@linux ~]# time -p find / -size +1k -exec ls -lart {} \;
real 703.89
user 129.08
sys 456.97
Note:

  • 文件比较少时,两者的执行效率相差几倍.
  • 文件比较多时,两者的执行效率相差几十倍.


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值