我有 Eclipse 项目和其中的“.project”文件,目录结构看起来像“ myProject/.project
”。我想将这些“.project”文件复制到另一个目录,但我希望保留封闭的目录名称。
假设我有“ a/myProject/.project
”,我想将“ myProject/.project
”复制到“ b
”,因此它是“ b/myProject/.project
”,但“ b/myProject
”不存在。当我尝试:
cp -r ./myProject/.project ../b
它仅复制“.project”文件本身,而不复制“myProject”目录。请指教。
答案1
您需要的开关是--parents
,例如:
jim@prometheus:~$ cp --parents test/1/.moo test2/
jim@prometheus:~$ ls -la test2/
total 42
drwxr-xr-x 3 jim jim 72 2010-09-14 09:32 .
drwxr-xr-x 356 jim jim 43136 2010-09-14 09:32 ..
drwxr-xr-x 3 jim jim 72 2010-09-14 09:32 test
jim@prometheus:~$ ls -la test2/test/1/.moo
-rw-r--r-- 1 jim jim 0 2010-09-14 09:32 test2/test/1/.moo
答案2
您还可以使用rsync -R
,它可在cp --parents
无法使用的 OSX 上使用。
答案3
与类似的东西一起使用tar
:
mkdir b; tar cpf - myProject/ | tar xpf - -C b/
(未经测试。请先进行试运行或在模型场景中尝试。)
答案4
我将 cpio 与 find 结合使用。解释在这里。
您的用例示例:
find /a/myProject/.project/ -type f | cpio -p -dumv /b/.
此命令查找所有文件/a/myProject/.project/
并复制其中包含的任何文件(同时保留路径)。