“find /someDir/* -exec rm {} \” 的含义是什么?

3

我理解这个命令

  • 删除在/some/directory/目录下至少4天的所有文件
  • 保留所有文件夹(会出现错误cannot remove '.../someDir': Is a directory)。

有人能解释一下-exec rm {} \;的语法吗?

find /some/directory/* -mtime +4 -exec rm {} \;

特别是,{}\;的含义是什么?{} \;是传递给-exec的参数吗?


请参考以下链接:https://superuser.com/questions/1072679/bash-what-does-means 或 https://askubuntu.com/questions/339015/what-does-mean-in-a-linux-command - undefined
如果我是你,我会像这样修改命令:find /some/directory/* -type f -mtime +4 -exec rm {} \;,以避免在rm尝试删除一些由find命令传递的目录时出现错误,-type f将强制find命令仅查找文件! - undefined
2个回答

12

{} 是当前文件的路径名

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


6

{} 填充了find表达式的结果。使用 \ 来转义 ;,因为我们希望 -exec 来选择它,但是 bash 默认会捕获它。

这个问题已经在其他地方多次得到回答。例如,这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接