免费注册 查看新帖 |

Chinaunix

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

diff2个文件夹的差异比较问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-10 12:44 |只看该作者 |倒序浏览
20可用积分
同一台机器上,有2个目录,目录old和new,里面又有若干文件和子目录
要求:1.将双方目录一样(或者时间锉一致)的文件比较后输出到share目录,
       2.将old目录存在或者修改过的文件比对new目录输出到update目录
     3.new目录对比old目录删除或者修改的文件输出到del目录
最好能在这3个动作后加入日志输出,好象很麻烦,有人能指教一下吗.非常感谢
这是看到以前有一个高手写的,不过内容和我这个有点不一样.

#!/bin/sh

[ $# -lt 2 ] && echo "ERROR : TWO directories is requested ." && exit 1
([ ! -d $1 ] || [ ! -d $2 ]) && echo "Directory must be existed ." && exit 2

mkdir -p output_share output_diff

find $1 $2 -type f | while read line;
do
        comp_file=$(sed "s/^$1/#$1/;s/^$2/$1/;s/#$1/$2/" <<< $line)
        share_output=output_share/$(sed -r "s/^($1|$2)//" <<< $(dirname $line))
        [ ! -f $comp_file ] && cp --parents $line output_diff || (mkdir -p $share_output && diff $line $comp_file > $share_output/$(basename $line).diff)
done

echo "Done !" && exit 0

最佳答案

查看完整内容

没看太明白。你删除了old/F目录下的world文件,new/F目录下是否有world呢?如果没有,那肯定就没处理了。我测试了一下似乎是没问题的。

论坛徽章:
0
2 [报告]
发表于 2009-06-10 12:44 |只看该作者
原帖由 pu57 于 2009-6-10 15:06 发表

其他都没有问题了
不过这里有个小问题.
2009-06-10 old/F/world >> del/F/world
这个问题在logfile里看的到,我删除了old目录下的F目录下的world文件,但我在del下看不见F目录
2009-06-10 old/F/ha ...

没看太明白。你删除了old/F目录下的world文件,new/F目录下是否有world呢?如果没有,那肯定就没处理了。
我测试了一下似乎是没问题的。

论坛徽章:
0
3 [报告]
发表于 2009-06-10 12:53 |只看该作者
2.将old目录存在或者修改过的文件比对new目录输出到update目录
3.new目录对比old目录删除或者修改的文件输出到del目录

没看太明白。

假设old有a、b、c、d四个文件,new有a、b、d、e四个文件,其中:
old/a与new/a内容相同,时间戳不同;
old/b与new/b内容不同,时间戳不同;
old/d与new/d内容与时间戳均相同。

你所期待的处理结果是怎样的?

论坛徽章:
0
4 [报告]
发表于 2009-06-10 12:58 |只看该作者
我以前写过一个差不多的
用find 跟stat进行比较

论坛徽章:
0
5 [报告]
发表于 2009-06-10 12:58 |只看该作者
有专门的软件吧?

论坛徽章:
0
6 [报告]
发表于 2009-06-10 13:08 |只看该作者
原帖由 kwokcn 于 2009-6-10 12:53 发表
2.将old目录存在或者修改过的文件比对new目录输出到update目录
3.new目录对比old目录删除或者修改的文件输出到del目录

没看太明白。

假设old有a、b、c、d四个文件,new有a、b、d、e四个文件,其中:
ol ...


是这样,如果能从内容来判断的话,那就从内容判断,如果不行再考虑最后修改时间。

old这个文件夹的东西定期会更新,里面的内容会变动.那么我就是想对比old和new后形成3个文件夹,这3个文件夹里分别装载着对比后的3个内容.分别是
1.old更新后new和他对比,完全一致的文件都output到share目录去
2.old更新后new和他对比,old有更新的文件output到update目录去
3.old更新后new和他对比,old做过变动或者更新过的文件output到del去

谢谢你特地来帮我

[ 本帖最后由 pu57 于 2009-6-10 13:32 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2009-06-10 13:10 |只看该作者
原帖由 我是DBA 于 2009-6-10 12:58 发表
我以前写过一个差不多的
用find 跟stat进行比较

是吗,用find的话我想只能根据时间来判断了吧

论坛徽章:
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
8 [报告]
发表于 2009-06-10 13:22 |只看该作者

回复 #5 pu57 的帖子

old定期更新, new怎么有比old更加新的文件?

论坛徽章:
0
9 [报告]
发表于 2009-06-10 13:32 |只看该作者
原帖由 blackold 于 2009-6-10 13:22 发表
old定期更新, new怎么有比old更加新的文件?

3.old更新后new和他对比,old做过变动或者更新过的文件output到del去
写错了..:wink:

论坛徽章:
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
10 [报告]
发表于 2009-06-10 13:38 |只看该作者

回复 #8 pu57 的帖子

那什么文件复制到update目录?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP