我有两个具有类似结构的目录。
./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脚本或工具....
由于
答案 0 :(得分: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'
但是第二个命令不适用于包含空格的文件。
现在您已经有了两个包含所需文件名的列表,您可以轻松编写一个小脚本,用它们做正确的事情。