2014-01-21 2 views
1

Может ли кто-нибудь разработать следующую команду, как она работает?Понимание команды: Сделать 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

когда $make distclean выдается,

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

спасибо очень хорошее объяснение. почему @ добавляется перед командой find. – user2598064

+0

спасибо за различные ссылки. они действительно полезны. – user2598064

+0

Просто удалите символ @ перед поиском. вы увидите разницу. :) – Jeyaram

Смежные вопросы