【问题标题】:What does the -exec option to 'find' do?'find' 的 -exec 选项有什么作用?
【发布时间】:2012-08-03 09:56:50
【问题描述】:

我是 Makefile 的新手。我正在浏览一个现有的 makefile,但无法理解它的作用。该行如下。

find $(RELEASE_DIR) -depth -name  "*CVS" -exec rm -rf {} \;

find 命令用于查找字符串。但我不明白这条线到底是做什么的。请帮助理解。

【问题讨论】:

  • man findman rm?
  • man find 这将删除项目发布目录中所有名为“*CVS”的文件。

标签: shell unix makefile


【解决方案1】:

find 命令用于搜索给定目录中的文件。

find <directory> -option1 -option2

-name "*CVS" 选项表示该命令将搜索名称末尾带有 CVS 的文件。

-depth 表示使用http://en.wikipedia.org/wiki/Depth-first_search 方法遍历目录。

-exec rm -rf {} \; 告诉 find 为找到的每个文件执行命令 rm -rf{} 是当前找到的文件的占位符,\; 标志着 rm 命令的结束。

【讨论】:

  • {e,a} - 匹配以逗号分隔的一组模式中的任何一个。但是这里我们没有给出任何模式。它必须单独找到 *CVS 为什么我们需要 {} 这里。
  • {} 是文件名的占位符。如果 {} 不存在,则 find 将执行 rm -rf 而不是 rm -rf fooCVS。我编辑了答案以进行澄清。
【解决方案2】:

这意味着它将扫描$(RELEASE_DIR),并且对于每个名称如*CVS的文件我们执行rm -rf,这意味着删除它。

=> 此命令删除名称末尾包含CVS 的所有文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2016-05-20
    • 1970-01-01
    • 2014-01-21
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多