xargs,exec都是命令傳遞的過濾器,捕捉前面乙個命令的結果,並將其傳遞到後乙個命令。簡單點說:
-exec 要結合{}\;來用, {}表示前面查詢的結果\;結束符,這是固定的寫法.xargs 要結合 |來操作,在處理批處理檔案時,速度要快些。做了乙個小實驗,統計整個linux系統,檔案大小在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.97note:檔案比較少時,兩者的執行效率相差幾倍.檔案比較多時,兩者的執行效率相差幾十倍.
xargs與exec命令執行效率問題
xargs,exec都是命令傳遞的過濾器,捕捉前面乙個命令的結果,並將其傳遞到後乙個命令。簡單點說 比如要統計伺服器上檔案大小在1k,10k,100k之上的檔案,將其列出來 root linux time p find size 100k xargs ls lart real 7.29 user 1...
find命令處理之exec與xargs區別
對符合條件的檔案執行所給的linux 命令,而不詢問使用者是否需要執行該命令。表示命令的引數即為所找到的檔案,以 表示comman命令的結束。是轉義符,因為分號在命令中還有它用途,所以就用乙個 來限定表示這是乙個分號而不是表示其它意思。ok 和 exec的作用相同,格式也一樣,只不過以一種更為安全的...
Linux中exec與xargs的區別
在linux中exec與xargs都是將前乙個命令的結果作為他的標準輸入,但二者還是有區別的。要結合 來用,表示前面查詢的結果 結束符,這是固定的寫法 引數是乙個乙個傳遞的,傳遞乙個引數執行一次 檔名有空格等特殊字元也能處理 傳遞給exce命令的長度有限制,在某些系統上 exec引數只能呼叫很少的s...