免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3315 | 回复: 6
打印 上一主题 下一主题

[文件目录] 请教:将两个目录下的文件统合到一个目录下的shell怎么写 [复制链接]

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-10 06:20:00每日论坛发贴之星
日期:2015-10-10 06:20:00程序设计版块每日发帖之星
日期:2015-10-11 06:20:00程序设计版块每日发帖之星
日期:2015-10-25 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-30 16:25 |只看该作者 |倒序浏览
如题,请教一下这个脚本应该怎么写:

想要将1b目录下面的文件全部移动到1a目录下面统一管理。

(1a)  /home/log-rec/AW/{YYYYMMDD}/Report/
(1b)  /home/log-rec/log/Report/{YYYYMMDD}/

条件:
如果1b目录下存在的文件,在1a目录下不存在的话,要将1b目录下存在的文件复制到1a的目录下面。
如果1a和1b目录下面存在重复名字的文件,将1b目录下面重复名字的文件删除。


谢谢大家!

论坛徽章:
5
亥猪
日期:2013-10-15 13:41:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34申猴
日期:2013-10-28 10:55:45辰龙
日期:2013-10-31 13:29:29丑牛
日期:2014-02-14 11:25:54
2 [报告]
发表于 2013-10-30 16:38 |只看该作者
多級目錄怎麼處理?

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-10 06:20:00每日论坛发贴之星
日期:2015-10-10 06:20:00程序设计版块每日发帖之星
日期:2015-10-11 06:20:00程序设计版块每日发帖之星
日期:2015-10-25 06:20:00
3 [报告]
发表于 2013-10-30 17:17 |只看该作者
lkk_super 发表于 2013-10-30 16:38
多級目錄怎麼處理?


(1a)  /home/log-rec/AW/{YYYYMMDD}/Report/
(1b)  /home/log-rec/log/Report/{YYYYMMDD}/

1a目录下面没有目录了,都是文件。

1b目录下面有两种情况:
1种是什么也没有;
还有一种情况是有两个固定的名称不变的目录,所有固定文件都在两个固定目录下面。

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
4 [报告]
发表于 2013-10-30 17:41 |只看该作者
diff一下两个文件夹,only in 1b的文件mv到1a里去,然后rm 1b下的所有文件就可以了

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-10 06:20:00每日论坛发贴之星
日期:2015-10-10 06:20:00程序设计版块每日发帖之星
日期:2015-10-11 06:20:00程序设计版块每日发帖之星
日期:2015-10-25 06:20:00
5 [报告]
发表于 2013-10-30 18:01 |只看该作者
dn833 发表于 2013-10-30 17:41
diff一下两个文件夹,only in 1b的文件mv到1a里去,然后rm 1b下的所有文件就可以了


谢谢你的解答。

我举个例子:

(1a)  /home/log-rec/AW/{YYYYMMDD}/Report/
(1b)  /home/log-rec/log/Report/{YYYYMMDD}/

1a目录下有 a.txt, b.txt, c.txt三个文件。

1b目录下有两个目录 dir1和dir2。
dir1目录下有三个文件: a.txt, b.txt, f.txt
dir2目录下有三个文件: c.txt, d.txt

也就是说现在需要将 dir1目录下的f.txt文件和dir2目录下d.txt文件移动到(1a)  /home/log-rec/AW/{YYYYMMDD}/Report/下面,
然后将dir1下面的a.txt, b.txt文件和dir2目录下的c.txt删除。

因为每次处理的时候,1a的日期目录{YYYYMMDD}和1b的日期{YYYYMMDD}目录都是相同的日期,日期的目录有好几千个,所以每次{YYYYMMDD}都在变化。

不知道这个功能怎样用shell程序来实现。

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
6 [报告]
发表于 2013-10-31 10:25 |只看该作者
回复 5# robinhappiness


    是这样的意思吗?
    一个很笨的方法:
  1. #!/bin/sh

  2. for i in `ls /home/log-rec/log/Report/*/*/*`
  3. do
  4. k=`echo $i|cut -d "/" -f 6`
  5. p=`echo $i|cut -d "/" -f 8`

  6. if [ ! -f "/home/log-rec/AW/$k/Report/$p" ]; then
  7. cp $i /home/log-rec/AW/$k/Report/$p;
  8. else
  9. rm $i
  10. fi
  11. done
  12.   
复制代码

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-10 06:20:00每日论坛发贴之星
日期:2015-10-10 06:20:00程序设计版块每日发帖之星
日期:2015-10-11 06:20:00程序设计版块每日发帖之星
日期:2015-10-25 06:20:00
7 [报告]
发表于 2013-10-31 18:29 |只看该作者
huang6894 发表于 2013-10-31 10:25
回复 5# robinhappiness


非常感谢这位兄弟。

我试试看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP