xargs,exec都是命令传递的过滤器,捕捉前面一个命令的结果,并将其传递到后一个命令。简单点说:
- -exec 要结合{}\;来用, {}表示前面查询的结果\;结束符,这是固定的写法.
- xargs 要结合
|来操作,在处理批处理文件时,速度要快些。
做了一个小实验,统计整个Linux系统,文件大小在1k,10k,100k之上的文件,将其列出来:
- 文件大小为100k比较
[[email protected] ~]# time -p find / -size +100k | xargs ls -lart {} \; real 7.29 user 1.31 sys 6.89 [[email protected] boot]# time -p find / -size +100k -exec ls -lart {} \; real 31.00 user 6.06 sys 20.88
- 文件大小为10比较
[[email protected] ~]# time -p find / -size +10k | xargs ls -lart {} \; real 12.43 user 3.96 sys 8.99 [[email protected] ~]# time -p find / -size +10k -exec ls -lart {} \; real 105.14 user 20.38 sys 67.65
- 文件大小为1k的比较
[[email protected] ~]# time -p find / -size +1k | xargs ls -lart {} \; real 28.62 user 5.72 sys 24.01 [[email protected] ~]# time -p find / -size +1k -exec ls -lart {} \; real 703.89 user 129.08 sys 456.97
Note:
- 文件比较少时,两者的执行效率相差几倍.
- 文件比较多时,两者的执行效率相差几十倍.
时间: 2024-10-06 12:40:25