`find /someDir/* -exec rm {} \` 是什么意思?

sam*_*sam 0 unix bash shell exec find

我明白这个命令

  • 删除/some/directory/至少 4 天前的所有文件
  • 保持所有文件夹完好无损(给出错误cannot remove '.../someDir': Is a directory)。

有人可以解释-exec rm {} \;?

find /some/directory/* -mtime +4 -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

特别是,{}和的含义是 \;什么?是{} \;的参数-exec

小智 8

{} 是当前文件的路径名

\;是终止命令的分号(rm在您的情况下)。它必须用反斜杠转义,否则,shell 会将其解释为整个find命令的结尾


B. *_*ing 6

{}填写表达式的结果find\被用来转义,;因为我们想-exec捡起它,但 bash 本身默认会捡起它。

这个问题已经在其他地方回答过很多次了。例如,这里.