比较文件夹,创建差异存档
Compare Folders, Create Archive of Differences
我有文件夹A和文件夹B
文件夹 A 包含大约 100 个文件,所有文本、js、php、bash 等。它们存储在文件夹的根目录和子目录中文件夹 A 中的文件夹和更多子文件夹。
文件夹 B 是文件夹 A 的副本,但部分文件已更新。
有什么方法可以将 A 与 B 进行比较并创建一个 tar.gz 文件,该文件仅包含 文件夹 B
中已更改的文件
创建 tar.gz 时,我需要保持文件夹结构不变。
目前我使用 WinMerge 来检查差异,但我很乐意查看任何有助于此的 windows 或 Linux application/commands。
谢谢
此行排除了仅在一个或另一个中的文件,但创建了您想要的 tar.gz 文件。
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"
丢弃输出的第一位,直到它显示“和”,然后是第二个文件夹的名称。这实际上也带走了第二个文件夹名称,但随后将其替换回
| sed "s/ differ//g"
丢弃 diff 输出的结束位。
| tar czf output.tar.gz -T -
告诉 tar 去做这件事。 c
== 创建一个 tar 文件 z
意味着压缩它 (zip) f
意味着文件名即将到来。 output.tar.gz
是你的输出文件 -T
表示 "get the filenames from the file I'm about to tell you" 最后的 -
表示 "use stdin instead"
我建议您在各个步骤中自己构建它,这样您就可以了解它是如何构建的,以及每个步骤的输出是什么样的。
我有文件夹A和文件夹B
文件夹 A 包含大约 100 个文件,所有文本、js、php、bash 等。它们存储在文件夹的根目录和子目录中文件夹 A 中的文件夹和更多子文件夹。
文件夹 B 是文件夹 A 的副本,但部分文件已更新。
有什么方法可以将 A 与 B 进行比较并创建一个 tar.gz 文件,该文件仅包含 文件夹 B
中已更改的文件创建 tar.gz 时,我需要保持文件夹结构不变。
目前我使用 WinMerge 来检查差异,但我很乐意查看任何有助于此的 windows 或 Linux application/commands。
谢谢
此行排除了仅在一个或另一个中的文件,但创建了您想要的 tar.gz 文件。
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"
丢弃输出的第一位,直到它显示“和”,然后是第二个文件夹的名称。这实际上也带走了第二个文件夹名称,但随后将其替换回
| sed "s/ differ//g"
丢弃 diff 输出的结束位。
| tar czf output.tar.gz -T -
告诉 tar 去做这件事。 c
== 创建一个 tar 文件 z
意味着压缩它 (zip) f
意味着文件名即将到来。 output.tar.gz
是你的输出文件 -T
表示 "get the filenames from the file I'm about to tell you" 最后的 -
表示 "use stdin instead"
我建议您在各个步骤中自己构建它,这样您就可以了解它是如何构建的,以及每个步骤的输出是什么样的。