我有一个文件夹和文件夹B比较文件夹,不同的创建归档
文件夹A包含约100个文件的所有文字,JS,PHP,庆典等,它们被保存在文件夹和子根文件夹和文件夹A内的其他子文件夹。
文件夹B是文件夹A的副本,但其中一些文件已更新。
有没有什么办法可以比较A到B,并创建一个仅包含已在文件夹B
我需要保持文件夹结构完整焦油时更改的文件的tar.gz文件。 gz被创建。
目前我使用WinMerge来检查差异,但我很高兴看到任何Windows或Linux应用程序/命令,这将有助于此。
感谢
我有一个文件夹和文件夹B比较文件夹,不同的创建归档
文件夹A包含约100个文件的所有文字,JS,PHP,庆典等,它们被保存在文件夹和子根文件夹和文件夹A内的其他子文件夹。
文件夹B是文件夹A的副本,但其中一些文件已更新。
有没有什么办法可以比较A到B,并创建一个仅包含已在文件夹B
我需要保持文件夹结构完整焦油时更改的文件的tar.gz文件。 gz被创建。
目前我使用WinMerge来检查差异,但我很高兴看到任何Windows或Linux应用程序/命令,这将有助于此。
感谢
此行不包括仅在一个或其他文件,但创建一个你想要的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
意味着“得到我要告诉你该文件的文件名”最后的-
表示“使用标准输入,而不是”
我建议你在各个步骤建立这个了自己,所以你可以看到它是如何构建的以及每个步骤的输出是什么样的。
感谢这个工程,但由此产生的tar.gz文件具有folderB作为文件中的第一个文件夹。是否有可能只保存文件和子文件夹结构。例如:一级到folderB? – Tom
运行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