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