在终端中,将多个文件夹合并为一个

Jos*_*ter 3 unix recursion merge command-line copy

我有一个由WDBackup(西部数字外部高清备份工具)创建的备份目录,其中包含备份的每一天的目录以及备份内容的增量内容.

层次结构如下所示:

20100101
  My Documents
    Letter1.doc
  My Music
    Best Songs Every
      First Songs.mp3
    My song.mp3 # modified 20100101
20100102
  My Documents
    Important Docs
      Taxes.doc
  My Music
    My Song.mp3 # modified 20100102

...etc...
Run Code Online (Sandbox Code Playgroud)

仅备份已更改的内容,并且所做的第一个备份包含选择用于备份的所有文件.

我现在要做的是逐步复制,同时保持文件夹结构,从最旧到最新,每个这些日期文件夹到一个'合并'文件夹,以便它覆盖旧内容并保留新内容.

例如,如果只使用这两个示例文件夹,最终合并的文件夹将如下所示:

Merged
  My Documents
    Important Docs
      Taxes.doc
    Letter1.doc
  My Music
    Best Songs Every
      First Songs.mp3
    My Song.mp3 # modified 20100102
Run Code Online (Sandbox Code Playgroud)

希望有道理.

谢谢,

玩笑

Pau*_*l R 6

您可以在bash for循环中使用rsync,例如:

$ for d in 2010* ; do rsync -av ./$d/ ./Merged/ ; done
Run Code Online (Sandbox Code Playgroud)

请注意,在真正运行之前,您可能只是要谨慎并测试它实际上会按照您的意愿执行 - 为此您可以使用rsync的-n标志执行"干运行":

$ for d in 2010* ; do rsync -avn ./$d/ ./Merged/ ; done
Run Code Online (Sandbox Code Playgroud)