我有两个目录说A和B. 我想比较目录B和A. 目录A和目录B有许多共同的目录(包含相同的)和文件 如果目录A中不存在文件,则通过维护目录结构将文件复制到目录C.
e.g。如果在目录A中,则不存在以下相对路径。
B/hellboy/MyScripts/dir1/
我想将此路径及后代文件和目录复制到目录C。
我使用diff命令尝试了很多。但我认为这是不可能的。请帮我摆脱这个。
答案 0 :(得分:0)
看看rdiff-backup(rsync的亲戚),它可能提供您想要的开箱即用。
答案 1 :(得分:0)
以下脚本代码段是否接近您要查找的内容?
#!/usr/bin/env bash
# Setup for testing:
# mkdir -p A/l1-{1,2,3}/l2-{4,5,6}
# mkdir -p B/l1-{2,3,4,5}/l2-{1,2,3,4}
# touch B/l1-{3,4,5}/l2-{2,3,4}/file-${RANDOM}
# touch {A,B}/l1-2/l2-4/never_goes_to_C
while read f d _; do
if [ -e "A/$f" ]; then
echo "---> FOUND: A/$f"
else
echo "---> NOT FOUND: A/$f, moving to C"
mkdir -p "C/$d" && cp -a "B/$f" "C/$d"
fi;
done < <(cd B; find . -printf "%p %h\n")