微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

递归比较两个目录,使用shell脚本将目录的内容复制到第三个目录

如何解决递归比较两个目录,使用shell脚本将目录的内容复制到第三个目录

|| 我有两个目录,分别是A和B。 我想将目录B与A进行比较。 目录A和目录B具有许多公用目录(包含相同)和文件。 如果目录A中不存在文件,则通过维护目录结构将文件复制到目录C。 例如如果在目录A中,则不存在以下相对路径。
B/hellboy/MyScripts/dir1/
我想将此路径以及后代文件和目录复制到目录C。 我用diff命令尝试了很多。但是我认为这是不可能的。请帮助我摆脱困境。     

解决方法

看一下rdiff-backup(rsync的亲戚),它可能提供您想要的即用型功能。     ,以下脚本片段是否接近您要查找的内容?
#!/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,4}
# touch B/l1-{3,5}/l2-{2,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\")
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。