Что делает -exec в `find ... -exec ...`?
Я учусь искать, и я запутался в этой команде.
find -name "*.swp" -exec rm {} ';'
Можете ли вы объяснить мне, что означает эта команда?
4 ответа
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
Или это (не работает на всех системах):
info find
Также проверьте это: LDP: Bash для начинающих и научитесь различать команду и ее аргументы;)
Эта строка просто рекурсивно находит файлы (в каждом подкаталоге введенной команды) с расширением swp и удаляет их. Вот руководство: http://www.ling.ohio-state.edu/~kyoon/tts/unix-help/unix-find-command-examples.htm И это руководство объясняет, как использовать -exec
переключаться с find
команда http://www.softpanorama.org/Tools/Find/using_exec_option_and_xargs_in_find.shtml