如果两个目录共用一个文件,则更新文件,而在一个目录中唯一时将其删除

时间:2019-06-12 12:22:52

标签: linux shell unix

假设Directory1具有

1.File1 
2.File2
3.Subdirectory1
    Subdirectory1 has :
    3.1. File 3
    3.2. File 4

Directory2具有

1.File1
2.File3
3.Subdirectory1
    Subdirectory1 has :
    3.1. File 3
    3.2. File 6

如果Directory2中唯一存在任何文件,则必须将其删除。 如果该文件同时存在于Directory1和Directory2中,则必须使用相同的文件夹结构[Updates]将Directory1中的文件复制到Directory2。

2 个答案:

答案 0 :(得分:0)

只需使用diff,例如:

diff -r dir1 dir2 | grep dir1
Only in dir1: file2
Only in dir1/subdir1: file4
Only in dir2/subdir1: file6

然后您可以awk或将结果存储在一个临时文件中,并在脚本中使用它。

答案 1 :(得分:0)

您似乎在谈论镜像功能,请参见漂亮的开源工具rsync。 https://rsync.samba.org/

它可以完成所有甚至更多的工作(如果需要,还可以通过LAN或SSH进行远程同步)。

rsync -options --otherOptions sourceDir targetDir

通常,您将使用以下命令行选项:

rsync -av /src/foo /dest
or
rsync -av /src/foo/ /dest/foo

注意:如果省略/ src / foo的结尾“ /”,则rsync将镜像到/ dest并创建foo子目录。您可以选择使用此命令的方式之一。