2014-01-21 49 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