‘find ... -exec ...’ 中的 -exec 起什么作用?

‘find ... -exec ...’ 中的 -exec 起什么作用?

我正在学习搜索,但我对这个命令感到困惑。

find -name "*.swp" -exec rm {} ';'

你能向我解释一下这个命令的意思吗?

答案1

exec 命令对找到的每个文件执行特定命令。它将其参数视为要执行的子进程。这是该find命令提供的最强大和最危险的选项之一。

当您执行上述命令时,find将在目录和子目录中搜索给定的模式。如果找到,它将返回文件名以及相对于当前目录的相对路径。例如:

  [guru@guru-Aspire~]$ touch temp1.swp temp2.swp temp3.swp   # Create 3 files.

  [guru@guru-Aspire~]$ find -name "*.swp" 
  ./temp2.swp
  ./temp3.swp
  ./temp1.swp

find将后面的所有参数-exec作为命令的一部分,直到;达到该参数。{}被命令搜索的文件名替换find

文件名和;需要分开,这样才能避免扩展。因此,我们可以使用转义它\;,也可以使用或引用,例如';'

答案2

-exec是 的一个选项find。这里发生的事情是所有匹配的文件*.swp被逐一删除。{}是完整路径和文件名,不确定尾随的;。但 find 的第一个术语应该是目录或路径。要在终端类型中了解更多信息man findman可以使用 搜索手册apropos command

答案3

给你鱼,而不是给你钓鱼的方法:在控制台中输入以下内容:

 man find

或者这个(并不适用于所有系统):

info find

另请查看这个:LDP:Bash 入门并学会区分命令和它的参数;)

答案4

该行只是使用以下方法递归查找文件(在发出的命令的每个子目录中)軟件扩展并删除它们。以下是指南:http://www.ling.ohio-state.edu/~kyoon/tts/unix-help/unix-find-command-examples.htm#EX02 本指南解释了如何使用-execswitch 和find命令http://www.softpanorama.org/Tools/Find/using_exec_option_and_xargs_in_find.shtml

相关内容