代码之家  ›  专栏  ›  技术社区  ›  Southern Hospitality

如何使用cp反复正确地将一个目录复制到新名称?

  •  0
  • Southern Hospitality  · 技术社区  · 14 年前

    我正在写一个makefile。但是,除了路径扩展和我可以做什么的限制之外,这基本上是一个shell脚本问题。作为生成过程的一部分,我希望将目录复制到目标。我的源目录和目标目录是变量,所以我不能对它们假设太多。他们可能是完全合格的,也可能是亲戚。

    但我想把目录$(a)复制到目的地$(b)。$(B)是我希望目录在目标位置具有的名称,而不是我希望将$(A)复制到的目录(即,生成的目录名将是$(B),而不是$(A)/$(B)),它可能是源和目标的相同路径,因此在执行任何操作之前,我会检查ifneq($(A),$(B))。但问题是,我在街区里做什么?

    如果我这样做

    cp -r $(A) $(B)

    它将第一次起作用。$(a)复制到$(b)。但是如果规则稍后再次触发,它将在$(b)内生成一个新的$(a)(即$(b)/$(a))。

    在你问之前,我不想 rm -r $(B) 如果可能的话,在做这个之前。

    4 回复  |  直到 14 年前
        1
  •  3
  •   user225065    14 年前

    CP-R $(a) / $(b)

    添加斜线将把$(a)的内容复制到$(b)中,如果它不存在,则创建$(b)。

        2
  •  1
  •   Alok Singhal    14 年前

    如果你使用GNU cp 你可以这样做:

    mkdir -p $(B)
    cp -a --target-directory=$(B) $(A)
    

    你也可以试试 rsync :

    rsync -a $(A) $(B)/
    
        3
  •  0
  •   ghostdog74    14 年前

    如何使用 cp -r $(A) $(B) 第一次,然后使用 -u 属于 copy 仅在源比目标更新时复制??参见第页,共页 cp 更多。

        4
  •  0
  •   William Pursell    14 年前

    使用rsync代替cp