【问题标题】:What does the '{}' in 'find . -name "*.pyc" -exec rm -rf {} \;" mean? [duplicate]'find 中的 '{}' 是什么意思。 -name "*.pyc" -exec rm -rf {} \;" 是什么意思? [重复]
【发布时间】:2014-06-04 06:40:08
【问题描述】:

这可能是一个幼稚的问题,但是我在网上和stackoverflow上搜索后没有找到答案。我不知道找到答案的正确关键字。在此先感谢您提供指点!

我的问题是关于以下命令中的“{}”:

find . -name "*.pyc" -exec rm -rf {} \;

为什么我们需要 {} 和 \;这里?

【问题讨论】:

  • man find ~ -exec command ; 以下所有要查找的参数都被视为命令的参数,直到参数包含 ';'遇到。字符串 '{}' 被当前文件名替换为正在处理的当前文件名,它出现在命令的参数中,而不仅仅是在单独的参数中,如在某些版本的 find 中。这两种结构都可能需要转义(使用“\”)或引用以保护它们不被 shell 扩展。
  • 这个问题似乎跑题了,因为它可以通过 RTFM 快速解决

标签: bash shell


【解决方案1】:

当搜索man find google 时说: http://unixhelp.ed.ac.uk/CGI/man-cgi?find

如果你再次搜索{},你会看到解释。 您也可以在控制台中发出man find

【讨论】:

    【解决方案2】:

    字符串“{}”被当前正在处理的文件名替换 它出现在命令的参数中的任何地方,而不仅仅是在 单独的参数,如在某些版本的 find 中。

    【讨论】:

      【解决方案3】:

      {} 表示通过 find 命令找到的文件或目录。 \; 使用 -exec 选项时需要 \; 选项与 find 表示命令终止。

      find . -name "*.pyc" -exec rm -rf {} \;
      

      仅在当前目录中查找名称以.pyc 结尾的文件或目录,并对找到的文件或目录执行删除操作。

      【讨论】:

        【解决方案4】:

        它代表找到的文件名。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-27
          • 2015-07-15
          • 2018-07-17
          • 2012-08-13
          • 2019-03-13
          相关资源
          最近更新 更多