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

标签 unix command-line merge copy recursion

我有一个由 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...

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

我现在要做的是增量复制,同时保持文件夹结构,从最旧到最新,将这些日期文件夹中的每一个放入一个“合并”文件夹中,以便它覆盖旧内容并保留新内容。

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

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

希望这是有道理的。

谢谢,

乔什

最佳答案

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

$ for d in 2010* ; do rsync -av ./$d/ ./Merged/ ; done

请注意,在真正运行它之前,您可能只想小心并测试它实际上会按照您的意愿执行 - 为此您可以使用 rsync 的 -n 标志来执行“试运行”:

$ for d in 2010* ; do rsync -avn ./$d/ ./Merged/ ; done

关于unix - 在终端中,将多个文件夹合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2715014/

相关文章:

linux - 从unix中的倒数第二行删除一个字符

email - 邮件 : Invalid header when sending mail attachment with Ubuntu

python - 如何将特定值从一个数据帧填充到另一个数据帧

git - Git 是否支持仅追加文件的自动 merge 冲突解决?

data-structures - Mathematica中的条件数据合并

linux - 测试条件shell脚本

c++ - 消息队列中的accept() IPC UNIX

shell - 曾经尝试过使用 unix shell find 删除文件吗?使用 -delete 选项

linux - 如何仅从文件中删除第一行范围?

windows - 如何使用CMD制作批处理文件?