递归查找并复制文件夹但保留结构

递归查找并复制文件夹但保留结构

我的问题:我有两个文件夹,即~/foo~/bar。它们具有相同的结构,如~/[foo/bar]/subdir1和,~/[foo/bar]/subdir2并且这些子目录中的foo文件夹如下.svn/

我想将这些.svn文件夹复制到同一个位置,但在bar。因此我已经尝试过:

find -name .svn -exec cp -R {} ~/bar/ \;

笔记:该命令执行于~/foo/

不幸的是,此命令既没有复制任何文件,也没有给我错误消息。那么我做错了什么?我的问题的解决方案是什么?

答案1

cd进入foo并运行

find . -name .svn -type d -exec sh -c 'for arg do echo cp -R "$arg" ../bar/"$arg"; done' sh {} +

它将echo为每个.svn目录调用命令foo 并产生如下输出:

cp -R ./subdir1/.svn ../bar/./subdir1/.svn
cp -R ./subdir2/.svn ../bar/./subdir2/.svn

验证这是否正确 — — 您可以../bar根据~/bar需要替换 — — 然后find再次运行不带 的命令echo

find . -name .svn -type d -exec sh -c 'for arg do cp -R "$arg" ../bar/"$arg"; done' sh {} +

这实际上会复制目录。

相关内容