有时我会看到类似
find . -name * -exec ls -a {} \;
我被要求执行此项工作。
这里是什么{} \;
意思?
答案1
是\;
将;
转义符传递给程序 (find) 以\
防止 shell 处理它(通常会将命令分开)。参数-exec
将所有内容解释为命令,直到插入;
结束-exec
内容为止。在-exec
内容中,参数表示{}
“在此处插入文件名”。因此,如果文件是“foo”和“bar”,它将执行“ls -a foo”,然后执行“ls -a bar”。所以所有这些含义只意味着因为-exec
存在。
其中的一部分-name *
可能用引号引起来*
。如果不用引号,它将产生非常不可预测的结果,因为所有文件名都将插入到*
您已有的文件名的位置,而这些名称可能会对该命令造成不良影响。-name *
为了更安全地运行该命令,请将其省略(但我不知道您的意图,无法理解为什么将其放在那里)。