求助:如何递归比较两个文件夹的不同,然和把两个文件夹合并到一起?

sh/bash/dash/ksh/zsh等Shell脚本
回复
iheartpp
帖子: 133
注册时间: 2008-09-18 20:15
送出感谢: 3 次
接收感谢: 0

求助:如何递归比较两个文件夹的不同,然和把两个文件夹合并到一起?

#1

帖子 iheartpp » 2009-03-04 13:43

我有两个文件夹A&B, A和B中都建立有很多级的子文件夹。这两个文件夹原先是一样的,但是由于不断地更改,内容发生了变化,怎样才能设计一个shell script,递归比较两个文件夹的不同,然和把两个文件夹合并到一起?

比如,把B文件夹合并到A里面,

就先递归比较A和B里面的每一级子文件夹名称是否相同:

子文件夹名称如果一样的话:

递归向下比较……如果到头了,目录不再含有子目录了,那就比较这个目录下的每一个文件是否相同:文件也相同的话把B里面的文件删掉,A里面的保留;文件不相同把B里面的文件重命名(加上一个后缀之类的)之后放到A里面

子文件夹名称如果不一样的话:把B有A没有的复制到A里面,A有B没有的就不管了

我只是觉得这样的脚本应该很多。要是随手写一个shell script不费什么事就麻烦给我回一个贴。知道那里有一个比较好的东西的话给我一个链接也好。

谢谢。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 求助:如何递归比较两个文件夹的不同,然和把两个文件夹合并到一起?

#2

帖子 eexpress » 2009-03-04 13:43

meld? diff3?
● 鸣学
头像
c\nc
帖子: 231
注册时间: 2007-12-25 12:51
送出感谢: 0
接收感谢: 0

Re: 求助:如何递归比较两个文件夹的不同,然和把两个文件夹合并到一起?

#3

帖子 c\nc » 2009-03-04 16:09

两个目录都 ls -R1 一下,输出用管道或者干脆重定向到文件,然后 diff 或者 meld 。
头像
opp
帖子: 622
注册时间: 2008-03-30 11:42
送出感谢: 0
接收感谢: 1 次
联系:

Re: 求助:如何递归比较两个文件夹的不同,然和把两个文件夹合并到一起?

#4

帖子 opp » 2009-05-02 11:57

如果文件分级都是一样的,想合并用cp -u命令不就可以了嘛?感觉shell想实现挺有难度的,而且特费事,还不如自己一个一个看了。当然就是为了想学习shell另当别论
回复

回到 “Shell脚本”