Что делает -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

Другие вопросы по тегам