2014-01-21 76 views
1

有人可以詳細說明下面的命令它是如何工作的?瞭解命令:使distclean

時發出 $make distclean
distclean: mrproper 
    @find $(srctree) $(RCS_FIND_IGNORE) \ 
     \(-name '*.orig' -o -name '*.rej' -o -name '*~' \ 
     -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ 
     -o -name '.*.rej' -o -size 0 \ 
     -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \ 
     -type f -print | xargs rm -f 

回答

1

find命令將搜索在$(srctree)與上述擴展名的文件。

@find $(srctree) $(RCS_FIND_IGNORE) \ 
     \(-name '*.orig' -o -name '*.rej' -o -name '*~' \ 
     -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ 
     -o -name '.*.rej' -o -size 0 \ 
     -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) 

然後每個文件的絕對路徑是使用-print選項,如使用-type f常規文件文件的類型採取。查找結果

-type f -print 

結果將被重定向到rm命令來刪除該文件。在將find命令結果重定向到rm命令時,您需要逐個傳遞文件名(這不是rm -r dirname)。因此xargs用於從stdin讀取並生成命令。

關於xargs的一些有用鏈接。
http://www.cyberciti.biz/faq/linux-unix-bsd-xargs-construct-argument-lists-utility/
Understanding the UNIX command xargs
http://linux.101hacks.com/linux-commands/xargs-command-examples/

一些鏈接查找命令
http://www.tutorialized.com/tutorial/10-examples-of-using-find-command-in-Linux/67264
http://www.thegeekstuff.com/2009/03/15-practical-linux-find-command-examples/
http://www.thegeekstuff.com/2009/06/15-practical-unix-linux-find-command-examples-part-2/

+0

感謝非常好的解釋。爲什麼在查找命令之前添加了@。 – user2598064

+0

感謝您的各種鏈接。他們真的很有用。 – user2598064

+0

只需在查找前刪除@符號。你會看到不同之處。 :) – Jeyaram