代码之家  ›  专栏  ›  技术社区  ›  Tom

比较文件夹,创建差异存档

  •  1
  • Tom  · 技术社区  · 8 年前

    文件夹A 包含大约100个文件,所有文本、js、php、bash等。它们存储在文件夹和子文件夹的根目录中,以及文件夹A中的其他子文件夹中。

    是文件夹a的副本,但某些文件已更新。

    有什么方法可以比较A和B并创建一个tar吗。仅包含在中更改的文件的gz文件 文件夹B

    我需要保持文件夹结构完整,当焦油。gz已创建。

    谢谢

    1 回复  |  直到 8 年前
        1
  •  2
  •   GregHNZ    8 年前

    diff -rq folderA folderB | grep -v "^Only in" | sed "s/^.*and folderB/folderB/g" | sed "s/ differ//g" | tar czf output.tar.gz -T -
    

    分解如下:

    dif -rq folderA folderB
    

    在这些文件夹之间进行递归区分,保持安静-只输出文件名。

    | grep -v "^Only in"
    

    | sed "s/^.*and folderB/folderB/g"
    

    丢弃输出的第一位,直到它显示“and”,然后是第二个文件夹的名称。这实际上也删除了第二个文件夹名,但随后将其替换回

    | sed "s/ differ//g"
    

    丢弃差分输出的结束位。

    | tar czf output.tar.gz -T -
    

    告诉焦油去做这件事。 c z f 表示文件名即将发布。 output.tar.gz 是您的输出文件 -T - 表示“改用标准输入法”

    推荐文章