`

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的参数, 连续使用了两个**, 目的是为了遍历所有的子文件夹.

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

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

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics