![‘find ... -exec ...’ 中的 -exec 起什么作用?](https://linux22.com/image/861834/%E2%80%98find%20...%20-exec%20...%E2%80%99%20%E4%B8%AD%E7%9A%84%20-exec%20%E8%B5%B7%E4%BB%80%E4%B9%88%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我正在学习搜索,但我对这个命令感到困惑。
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 find
。man
可以使用 搜索手册apropos command
。
答案3
答案4
该行只是使用以下方法递归查找文件(在发出的命令的每个子目录中)軟件扩展并删除它们。以下是指南:http://www.ling.ohio-state.edu/~kyoon/tts/unix-help/unix-find-command-examples.htm#EX02
本指南解释了如何使用-exec
switch 和find
命令http://www.softpanorama.org/Tools/Find/using_exec_option_and_xargs_in_find.shtml