繁体   English   中英

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

[英]Comparing two directory recursively, copy content of directory to third directory using shell script

我有两个目录,分别是A和B。我想将目录B与A进行比较。目录A和目录B具有许多公用目录(包含相同)和文件。
如果目录A中没有文件,则通过维护目录结构将文件复制到目录C。

例如,如果在目录A中不存在以下相对路径。

B/hellboy/MyScripts/dir1/

我想将此路径以及后代文件和目录复制到目录C。

我用diff命令尝试了很多。 但是我认为这是不可能的。 请帮助我摆脱困境。

以下脚本片段是否接近您要查找的内容?

#!/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")

看一下rdiff-backuprsync的相对对象),它可能提供您想要的即用型功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM