標籤:linux shell
xargs,exec都是命令傳遞的過濾器,捕捉前面一個命令的結果,並將其傳遞到後一個命令。簡單點說:
- -exec 要結合{}\;來用, {}表示前面查詢的結果\;結束符,這是固定的寫法.
- xargs 要結合 |來操作,在處理批次檔時,速度要快些。
做了一個小實驗,統計整個Linux系統,檔案大小在1k,10k,100k之上的檔案,將其列出來:
[[email protected] ~]# time -p find / -size +100k | xargs ls -lart {} \;real 7.29user 1.31sys 6.89[[email protected] boot]# time -p find / -size +100k -exec ls -lart {} \;real 31.00user 6.06sys 20.88
[[email protected] ~]# time -p find / -size +10k | xargs ls -lart {} \;real 12.43user 3.96sys 8.99[[email protected] ~]# time -p find / -size +10k -exec ls -lart {} \;real 105.14user 20.38sys 67.65
[[email protected] ~]# time -p find / -size +1k | xargs ls -lart {} \;real 28.62user 5.72sys 24.01[[email protected] ~]# time -p find / -size +1k -exec ls -lart {} \;real 703.89user 129.08sys 456.97Note:
- 檔案比較少時,兩者的執行效率相差幾倍.
- 檔案比較多時,兩者的執行效率相差幾十倍.
xargs與exec命令執行效率問題