免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: ailms
打印 上一主题 下一主题

[学习共享] bash 下使用 cp 命令的 --parents 参数 实现递归拷贝 (付递归删除) [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-07-24 17:02 |只看该作者
本帖最后由 linux_kaige 于 2013-07-24 17:03 编辑

我就不明白了,cp -r ,rm -r 不行吗??

论坛徽章:
0
12 [报告]
发表于 2013-07-24 19:30 |只看该作者
回复 11# linux_kaige


主要是保持目录结构,cp -r 只能拷贝叶子节点,中间的子目录是不会自动创建的   

论坛徽章:
0
13 [报告]
发表于 2013-07-24 19:30 |只看该作者
回复 9# JeremyTOJ


这也是一种方法

还有就是前面说的直接 rsync 两个本地目录   

论坛徽章:
0
14 [报告]
发表于 2013-07-25 10:22 |只看该作者
回复 12# ailms

可以的。。。hava a try。
   

论坛徽章:
0
15 [报告]
发表于 2013-07-26 21:23 |只看该作者
回复 14# linux_kaige


我要的是保持目录结构。-r 是对目录有效,对文件无效

  1. bob@wordpress:~$ cp -r src/level1/level2/level3/file5 dst/sub1/sub2/sub3/ -v
  2. `src/level1/level2/level3/file5' -> `dst/sub1/sub2/sub3/file5'
  3. bob@wordpress:~$
复制代码

论坛徽章:
0
16 [报告]
发表于 2013-07-29 09:15 |只看该作者
回复 15# ailms
将 A 目录下的某个子目录(例如 A/sub1/sub2/sub3/file1) 拷贝到目录 B ,并保持目录结构。
[root@yang test]# pwd
/root/test
[root@yang test]# mkdir -pv ./a/b/c/d/
mkdir: 已创建目录 “./a”
mkdir: 已创建目录 “./a/b”
mkdir: 已创建目录 “./a/b/c”
mkdir: 已创建目录 “./a/b/c/d”
[root@yang test]# cd ./a/b/c/d/
[root@yang d]# cat <<ok>> file1
> this is a test.
> ok
[root@yang d]# cd -
/root/test
[root@yang test]# mkdir -pv q/w
mkdir: 已创建目录 “q”
mkdir: 已创建目录 “q/w”
[root@yang test]# cp -R ./a ./q/w/
[root@yang test]# cat q/w/a/b/c/d/file1
this is a test.
[root@yang test]#
将 A 目录下的某个子目录(例如 A/sub1/sub2/sub3/file1) 拷贝到目录 B ,并保持目录结构。
找到最外层目录A,然后cp -R ./A   /B 就ok了。   

论坛徽章:
0
17 [报告]
发表于 2013-07-29 18:21 |只看该作者
回复 16# linux_kaige


是的,但这样还不如直接用 cp --parents , 省去自己 mkdir -p

这个问题就到此结束把    

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
18 [报告]
发表于 2013-07-29 19:32 |只看该作者
@ailms@linux_kaige
cp -R ./A   /B                                 是将./A目录的整个目录树复制到/B

cp --parents  ./A/tree1/file  /B        是将./A目录的./A/tree1/file这一支分支复制到/B


如果楼主只要将./A/tree1/file 这一分支复制到/B,并且./A下还有其他分支的话 cp -R ./A   /B 不符合要求。

如果楼主就是要将文件file所在树的A节点以下的所有分支都复制到/B ,那么 cp -R ./A   /B 正好符合要求。








论坛徽章:
0
19 [报告]
发表于 2013-07-30 18:17 |只看该作者
回复 18# cao627

是的,不过我说的那个,也不用mkdir啊,开始看到这个帖子觉得很怪,感觉很简单一问题,咋整出复杂的脚本出来呢
   

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
20 [报告]
发表于 2013-07-30 22:22 |只看该作者
@linux_kaige
是的 ,17楼没有仔细看你16的栗子,想当然了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP