-exec和xargs的區別

-exec和xargs的區別

2010-11-27 星期六 晴朗java

當你在命令行執行:ide

$find . -name 'core' -type f -exec rm {} /;性能

時,find -exec 命令會對每一個匹配的文件執行一個單獨的rm操做(execute a separate rm for each one), 正如你手動敲入下面命令:spa

rm ./bin/core
rm ./source/shopping_cart/core
rm ./backups/core
...

可是使用這種方式,若是有100個文件匹配了,那麼就須要啓100個進程,一個進程處理一個rm命令。通常來講,其越多進程,意味着越耗性能。咱們能夠換個思路,咱們將要刪除文件看成參數傳遞給rm不就能夠了嗎?也就是說:命令行

rm ./bin/core
rm ./source/shopping_cart/core
rm ./backups/core
...

改爲:code

rm ./bin/core ./source/shopping_cart/core ./backups/core

可是前提是後面的命令必須支持多參數。相有些命令,好比unzip,就不支持輸入多個jar包,因此必須用-exec。
xargs,顧名思義,是對參數進行處理的命令。它的任務就是將輸入行轉換成下一個命令的參數列表。所以上面的find -exec命令能夠改寫成:orm

find . -name 'core' -type f -print | xargs rm
相關文章
相關標籤/搜索