Я изучаю поиск, и я смущен эта команда.
find -name "*.swp" -exec rm {} ';'
Можно ли объяснить мне, что означает эта команда?
exec
команда выполняет определенную команду для каждого найденного файла. Это рассматривает, это - аргументы как подпроцесс для выполнения. Это - одна из самой мощной и опасной возможности, предоставленной find
команда.
Когда Вы выполняете вышеупомянутую команду find
ищите данный шаблон в каталогах и подкаталогах, и, если найдено он возвращает имя файла с относительным путем из текущего каталога. для примера
[guru@guru-Aspire~]$ touch temp1.swp temp2.swp temp3.swp #(created 3 file)
[guru@guru-Aspire~]$ find -name "*.swp"
./temp2.swp
./temp3.swp
./temp1.swp
find
берет все аргументы после -exec
как часть команды до аргумента, состоящего из ;
достигнут и заменить {}
с именем файла, искавшим find
команда.
Имя файла и ;
необходим, чтобы быть разделенным так, чтобы был, может быть защищен от расширения. Так любой мы можем выйти из него использование \;
или мы можем использовать или заключенный в кавычки как ';'
-exec
опция find
. Что происходит, вот все файлы, соответствующие *.swp
, удалены один за другим. {}
полный путь и имя файла, не уверенное в запаздывании ;
. Но первый срок находки должен быть каталогом или путем к одному. Узнавать больше в терминальных руководствах типа man find
. man
может искаться с помощью apropos command
.
Вместо того, чтобы давать Вам рыбу, вот то, как ловить рыбу: Введите это в консоли:
man find
Или это (doens't работают над всеми системами):
info find
Также проверяют это: LDP: Bash для Новичков и учится различать команду, и это - аргументы;)
Та строка просто находит файлы рекурсивно (в каждом подкаталоге команды выпущенными) с расширение swp и удаляет их. Вот руководство: http://www.ling.ohio-state.edu/~kyoon/tts/unix-help/unix-find-command-examples.htm#EX02 И это руководство объясняет, как использовать -exec
переключатель с find
команда http://www.softpanorama.org/Tools/Find/using_exec_option_and_xargs_in_find.shtml