如何在Linux中复制文件保留目录路径?

dhb*_*lah 107 linux directory copy

我有 Eclipse 项目和“.project”文件,目录结构看起来像' myProject/.project'。我想将这些“.project”文件复制到另一个目录,但我希望保留封闭目录名。

假设我有 ' a/myProject/.project',我想将 ' myProject/.project'复制到 ' b',所以它是 ' b/myProject/.project',但 ' b/myProject' 不存在。当我尝试:

 cp -r ./myProject/.project ../b
Run Code Online (Sandbox Code Playgroud)

它只复制“.project”文件本身,不复制“myProject”目录。请指教。

Jam*_*ale 189

您需要的开关是--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
Run Code Online (Sandbox Code Playgroud)


小智 24

您也可以使用rsync -R,它适用于cp --parents不可用的OSX 。

/sf/answers/969870331/


lor*_*zog 9

tar与类似的东西一起使用:

mkdir b; tar cpf - myProject/ | tar xpf - -C b/
Run Code Online (Sandbox Code Playgroud)

(未测试。先试运行一下或在模型场景中尝试。)


小智 5

首先使用mkdir -p递归父路径创建来创建目标文件夹。然后将内容复制到目标文件夹:

mkdir -p b/myProject/.project
cp -r a/myProject/.project/file b/myProject/.project
Run Code Online (Sandbox Code Playgroud)


小智 5

我将 cpio 与 find 结合使用。解释在这里

您的用例示例:

find /a/myProject/.project/ -type f | cpio -p -dumv /b/.
Run Code Online (Sandbox Code Playgroud)

此命令查找其中的所有文件/a/myProject/.project/并复制其中包含的任何文件,同时保留路径。