免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 饺子必须死
打印 上一主题 下一主题

[文本处理] bash脚本复制文件夹的问题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2014-09-30 08:44 |只看该作者
回复 20# jason680

强行覆盖啊,保证一个目录名
   

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
22 [报告]
发表于 2014-09-30 09:02 |只看该作者
回复 21# 饺子必须死
这么做确实有问题,文件会复制多遍
find 执行 cp命令不是很好处理,最好的处理方法还是按照18F提到到方法完整复制过去,再查找你不要的文件删除


   

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
23 [报告]
发表于 2014-09-30 09:04 |只看该作者
回复 21# 饺子必须死

check again

$ man cp
NAME
       cp - copy files and directories

SYNOPSIS
       cp [OPTION]... [-T] SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY
       cp [OPTION]... -t DIRECTORY SOURCE...

DESCRIPTION
       Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

       Mandatory  arguments  to  long  options are mandatory for short options
       too.

       -a, --archive
              same as -dR --preserve=all
       ...
       -f, --force
              if an existing destination file cannot be opened, remove it  and
              try again (redundant if the -n option is used)
       ...
       -R, -r, --recursive
              copy directories recursively
       ...

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
24 [报告]
发表于 2014-09-30 09:19 |只看该作者
本帖最后由 chengchow 于 2014-09-30 09:22 编辑

回复 23# jason680
LZ说的这种复制两遍(其实是很多遍)的问题,是find出来的结果就是递归显示的
-exec cp/命令又依次执行了一遍,所以有子目录的都复制的多遍
find ... -exec cp 递归处理确实不好处理
最好的做法是先完整复制过去再删除不要的类型比较合适点
...
我不知道关于find执行cp的处理我理解的对不对?
刚才测试了下这样结果是可以的,过程应该还是处理了很多遍
find $paramA ! -name "*.tmp" -exec /bin/cp -rf {} $paramB/{} \;


   

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
25 [报告]
发表于 2014-09-30 09:22 |只看该作者
回复 24# chengchow


    你都 r 了,递归处理肯定会重复啊。

   用 find 不是造成重复的原因吧。

   这种问题,用 rsync 更方便,原贴已经说了。

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
26 [报告]
发表于 2014-09-30 09:27 |只看该作者
本帖最后由 chengchow 于 2014-09-30 09:29 编辑

回复 25# blackold
rsync是可以处理的不会造成浪费,cp本身的r功能是不会复制多遍的
递归应该是依次处理子目录,否则cp是不执行子目录的,find本身就有递归功能,cp -r又递归了一次,才会有一个文件多次执行的问题吧?


这点小事都惊动黑大神了


   

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
27 [报告]
发表于 2014-09-30 09:39 |只看该作者
回复 26# chengchow


    对啊。find 每个文件只会处理一次。 cp -r 递归处理后就产生重复了。


    这种问题,还可以用 tar 方法。

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
28 [报告]
发表于 2014-09-30 09:44 |只看该作者
回复 27# blackold
恩,如果是一次性备份这种情况用tar --exclude应该是效率最高的


   

论坛徽章:
0
29 [报告]
发表于 2014-09-30 10:41 |只看该作者
回复 28# chengchow
1:按照你说的,如果是r的问题的话,我刚才把r去掉,结果显示还是复制两次。
2:我不知道你有没有看到我之前发的原帖的内容。我想在复制的时候忽略某种文件,假如要像你说的先cp后find的话,是不是有失原意啊,当然也能达到目的
3:另外,我是新手,可能说的有些偏颇,但只是想表达自己意见。


   

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
30 [报告]
发表于 2014-09-30 10:50 |只看该作者
回复 29# 饺子必须死


    你的源目录下面是单纯的文件,还是混合了目录和文件啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP