我的问题:我有两个文件夹,即~/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 {} +
这实际上会复制目录。