2017-08-09 54 views
0

我有一个文件夹和文件夹B比较文件夹,不同的创建归档

文件夹A包含约100个文件的所有文字,JS,PHP,庆典等,它们被保存在文件夹和子根文件夹和文件夹A内的其他子文件夹。

文件夹B是文件夹A的副本,但其中一些文件已更新。

有没有什么办法可以比较A到B,并创建一个仅包含已在文件夹B

我需要保持文件夹结构完整焦油时更改的文件的tar.gz文件。 gz被创建。

目前我使用WinMerge来检查差异,但我很高兴看到任何Windows或Linux应用程序/命令,这将有助于此。

感谢

回答

1

此行不包括仅在一个或其他文件,但创建一个你想要的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" 

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

| sed "s/ differ//g" 

丢弃diff输出的结束位。

| tar czf output.tar.gz -T - 

让焦油做这件事。 c ==创建一个tar文件z表示压缩它(zip)f表示文件名即将到来。 output.tar.gz是你的输出文件-T意味着“得到我要告诉你该文件的文件名”最后的-表示“使用标准输入,而不是”

我建议你在各个步骤建立这个了自己,所以你可以看到它是如何构建的以及每个步骤的输出是什么样的。

+0

感谢这个工程,但由此产生的tar.gz文件具有folderB作为文件中的第一个文件夹。是否有可能只保存文件和子文件夹结构。例如:一级到folderB? – Tom

+0

运行folderB中的命令,更新使用的路径并排除output.tar.gz似乎可行。 'diff -rq ../folderA。 | grep -v“^只在”|“中sed“s /^.*和。\ /// g”| sed“s/differ // g”| tar czf output.tar.gz --exclude = *。tar.gz -T - ' – Tom

相关问题