Unix:如何合并两个目录


17

假设我有两个包含各种内容的文件夹,foo并且bar。我如何合并barfoo

  • foo不在其中的文件bar保持不变。
  • bar不在其中的文件foo现在位于中foo
  • 中的文件foobar已被中的文件替换bar

Answers:


25

如果我正确地阅读了您的要求,则没有从foo到的文件bar。看来您只需复制的内容,bar即可foo根据需要覆盖文件(默认行为)。

$ cp -R /path/to/bar/* /path/to/foo

是的,我不确定的是递归性,以及如何在foo内部只有bar作为foo / bar来结束。但这似乎正是我想要的:)
Svish

1
对了,如果你只是做了cp -R /path/to/bar /path/to/foo它会创建一个目录bar里面foo。微妙的一点。
锥杀手2011年

1
注意:由于壳程序的工作原理,它将省略中的隐藏文件/目录bar(即名称以点号–开头.)。
卡米尔Maciorowski


1

尝试这个 :

$ cp -r-u-v /path/to/foo/* /path/to/bar/

man cp
-u,--update 仅在SOURCE文件比目标文件新或缺少目标文件时才复制
-R,-r,-- recursive递归复制目录


1
已经有两个人建议使用cp命令,因此您的回答似乎多余。花几分钟的时间来解释所选择的论点如何比其他建议更好地工作,这将使您的答案更有用。
music2myear

1
仅当源文件比目标文件新时,-u标志才会更新。请参阅:man cp -> -u,--update:仅当SOURCE文件比目标文件新时或目标文件丢失
时才进行复制

将该信息添加到问题中(使用帖子下方的“编辑”),以便人们可以在答案本身中看到有用的信息。
music2myear
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.