但问题是这个命令是做什么的?我知道 find 命令,但不知道选项,比如引号中的表达式以及 -exec 和...
find /var -name "[0-9]*test[A-Z]" -exec {} /root/{}';'
答案1
find /var
指示find
从目录开始搜索/var
。
-name "[0-9]*test[A-Z]"
find
是指示仅返回与模式匹配的文件/文件夹的搜索模式"[0-9]*test[A-Z]"
。如果您不引用搜索字符串,您的 shell 将扩展该搜索模式并尝试执行结果。通过引用搜索模式,您可以将其作为参数传递给find /var -name
。
原始问题的部分-exec...
有语法错误,应该是(请注意dessert 和 daisy 所评论的-exec {} /root/{} ';'
前面的空格)。 它指示执行以下参数,其中被 的搜索结果替换。您通常也应该引用它们以防止 shell 扩展。';'
find
{}
find
最后,定义了执行命令时';'
该部分应如何处理搜索结果。指示 find对每个单个查找结果运行 的命令。当使用 时,命令将运行并展开所有查找结果。这也必须用引号引起来或转义,以防止 shell 将其展开并生成 的参数。-exec
';'
-exec
'+'
-exec
find...-exec
下面是一个小例子,可以说明";"
和之间的区别。"+"
[user@localhost test]$ find . -name "[0-9]*test[A-Z]" -exec echo "{}" ";"
./12ltestA
./1ltestA
[user@localhost test]$ find . -name "[0-9]*test[A-Z]" -exec echo "{}" "+"
./12ltestA ./1ltestA