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上使用。https://stackoverflow.com/a/13855290/598940
#3 楼
将tar
与以下类似的东西一起使用:#4 楼
首先使用mkdir -p
通过递归父路径创建来创建目标文件夹。然后将内容复制到目标文件夹:mkdir -p b/myProject/.project
cp -r a/myProject/.project/file b/myProject/.project
#5 楼
cp -P a/myProject/.project b
有关更多信息,请参见
man cp
。评论
这似乎没有帮助。它只会将“ .project”本身复制到b中,而不会复制“ myProject”。
– dhblah
2010-09-14在8:11
#6 楼
我将cpio与find结合使用。您的用例示例:
find /a/myProject/.project/ -type f | cpio -p -dumv /b/.
此命令查找
/a/myProject/.project/
中的所有文件并进行复制,同时保留路径,任何其中包含的文件。评论
.project是一个文件,而不是dir!
–ddbug
16-10-15在11:12
#7 楼
除了--parents
,还需要添加-r
选项,以避免遗漏大多数内部目录的副本。>
$ cp --parents test/1/.moo test2/
cp: omitting directory ‘test/1/.moo’
#8 楼
请注意,cp --parents
中似乎存在一个错误。当我同时使用--parents
和--preserve=all
时,未保留SOME 目标目录的日期和时间属性。 #8767:cp:--preserve = all在使用--parent时对父母不起作用。
因此,似乎您不能依赖于保留的属性当使用
--parents
以及--preserve=all
或-p
等时。#9 楼
我将--parents
与cp
命令一起使用,并且与我完美配合。有关更多详细信息,请始终使用手册。谢谢。
评论
不会在其他5个答案中添加任何内容。
–鹿猎人
15年5月15日在8:40
答题者请注意,Eclipse中的.project是文件而不是目录。所以mkdir -p a / .project没有任何意义。
–ddbug
16-10-15在11:10
评论
效果出奇的好!在Mac上:mkdir b; tar -c -f new.tar $(cat myP); tar -x -f new.tar -C b /; #myP是文本文件,其中包含要复制的文件路径列表
–alexey
16年8月23日在21:14