在 Linux 中 find 命令中的“{} \;”是什么意思?

在 Linux 中 find 命令中的“{} \;”是什么意思?

有时我会看到类似

find . -name * -exec ls -a {} \;

我被要求执行此项工作。

这里是什么{} \;意思?

答案1

\;;转义符传递给程序 (find) 以\防止 shell 处理它(通常会将命令分开)。参数-exec将所有内容解释为命令,直到插入;结束-exec内容为止。在-exec内容中,参数表示{}“在此处插入文件名”。因此,如果文件是“foo”和“bar”,它将执行“ls -a foo”,然后执行“ls -a bar”。所以所有这些含义只意味着因为-exec存在。

其中的一部分-name *可能用引号引起来*。如果不用引号,它将产生非常不可预测的结果,因为所有文件名都将插入到*您已有的文件名的位置,而这些名称可能会对该命令造成不良影响。-name *为了更安全地运行该命令,请将其省略(但我不知道您的意图,无法理解为什么将其放在那里)。

相关内容