有两个目录dest和src,
dest目录下有目录和文件,src目录下有更改过的一些dest下的目录和文件,以及一些新增的文件,现在对两个目录进行合并以及覆盖dest下的旧文件。
PS:该命令可以将dest下与src名字相同的文件,替换为src的文件。没有的文件则直接copy。不修改dest下,src没有的文件。递归调用,实现对所有文件、文件夹操作。
cp -fvrap $PATH2/* $PATH1/
命令其实非常简单,解释下:
-f 强制覆盖,不询问yes/no(-i的默认的,即默认为交互模式,询问是否覆盖)
-v merge过程可视化
-r 递归复制,包含目录
-a 做一个备份,这里可以不用这个参数,我们可以先备份整个src目录
-p 保持新文件的属性不变
automerge.sh
#!/bin/bash
#PATH1 is destination folder, will be changed
#PATH2 is source folder, not change
PATH1='/home/kent/kent/dest'
PATH2='/home/kent/share/src'
cp -fvrap $PATH2/* $PATH1/
kent@ubuntu:~/kent$ chmod +x
automerge.sh
kent@ubuntu:~/kent$ ./automerge.sh
'/home/kent/share/src/a' -> '/home/kent/kent/dest/a'
'/home/kent/share/src/b' -> '/home/kent/kent/dest/b'
'/home/kent/share/src/c' -> '/home/kent/kent/dest/c'
'/home/kent/share/src/a' -> '/home/kent/kent/dest/a'
'/home/kent/share/src/b' -> '/home/kent/kent/dest/b'
'/home/kent/share/src/c' -> '/home/kent/kent/dest/c'