0

我有 2 个具有类似结构的目录。

./projectA
          /directory1
                 /file1
          /directory2
                 /file2
                 /file3
                 /file4
          /directory3
          /directoryA
./projectB
          /directory1
          /directory2
                 /file3
          /directory3
          /directoryB

我想将 projectA 合并到 projectB 中。如果目录或文件存在于 A 中但不存在于 B 中,则执行从 A 到 B 的 svn 复制到相应的目标。如果 A 中的文件在 B 中有相应的文件,则回显警告。我怎样才能自动做到这一点?它可以是 shell 脚本或工具....

谢谢

4

1 回答 1

1

使用此命令,您将获得所有在projectA但不在projectB的文件,忽略.svn文件夹:

diff -qr projectA projectB --exclude=.svn | grep "^Only in projectA:" | cut -d: -f2 | sed 's/^ *//g

使用此命令,您可以获得两个文件夹中存在且不同的所有文件(即在复制之前您可能需要检查的文件):

diff -qr projectA projectB --exclude=.svn | grep "^Files " | cut -d" " -f2 | sed 's!projectA!!g'

但是,第二个命令不适用于其中包含空格的文件。

现在您已经有了两个包含所需文件名的列表,您可以轻松地编写一个小脚本来正确处理它们。

于 2013-10-17T05:39:21.653 回答