Ruby练习贴01: 遍历两个文件夹, 删除那些名字相同, 内容也相同的文件

美国的同事经常给我发点儿source, 其实他可以只给我发差分的内容,

但是这样一来, 我就无法知道某个文件, 到底是老美是删除了他, 还是没有变更.

所以我们通常的做法, 就是把整个工程发过来,

(不要问我, 问什么我们不使用同一个版本控制...这个问题很难回答)

 

于是我就很想知道, 这两版source到底有什么不同,

我想删除那些相同的文件,

这个操作可以在Beyond Compare中点几下按钮来完成.

 

为了比点按钮更快, 也为了练习一下ruby, 把这个脚本用ruby实现如下:

 

require "fileutils"
require "pathname"

dir1 = 'I:/temp/test_for_ruby/121102_OLD'
dir2 = 'I:/temp/test_for_ruby/121221_NEW'

Dir.glob("#{dir1}/**/*") do |item|
  next if item == '.' or item == '..'
  next if File.directory? item
  coordinate_item =  Pathname.new(dir2)+ Pathname.new(item).relative_path_from(Pathname.new(dir1))
  next unless File.exist? coordinate_item
  FileUtils.rm [item,coordinate_item] if FileUtils.compare_file(item,coordinate_item)
end

 

脚本中, glob的参数, 连续使用了两个**, 目的是为了遍历所有的子文件夹.

再就是操作相对路径的部分有一点儿长,

其余还都算很接近自然语言

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值