`

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

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

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

 

 

 

 

分享到:
评论

相关推荐

    收集的多个ruby遍历文件夹代码实例

    一、遍历文件夹下所有文件,输出文件名 代码如下: def traverse_dir(file_path)  if File.directory? file_path  Dir.foreach(file_path) do |file|  if file !=”.” and file !=”..”  traverse_dir(file_...

    文件夹遍历

    ruby 文件夹遍历的四种方法。

    用 Ruby 实现的脚本:可以提取 iOS 项目中的类继承关系

    这个Ruby脚本的目的是从iOS项目中提取出类的继承关系,并以JSON格式导出结果文件。利用这个脚本,我们可以便捷地分析一个iOS项目的类结构。 脚本的工作原理是遍历iOS项目中的所有Swift文件,通过解析语法树来找出类...

    Ruby遍历文件夹同时计算文件的md5sum

    主要介绍了Ruby遍历文件夹同时计算文件的md5sum,本文直接给出实现代码,需要的朋友可以参考下

    ruby复制文件夹

    ruby复制文件夹,各类文件夹的操作

    ruby打包文件ruby入门通

    ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件

    Ruby中遍历目录的简洁方法

    在ruby中我们要实现遍历指定目录的方法,网上的方法也非常之多,我们可以拿来参考参考,如下边的traverse.rb文件内容所示: 代码如下: #!/usr/bin/ruby def traverse(filepath)  if File.directory?(filepath)  ...

    ruby:Ruby 中的练习练习

    Ruby 中的练习练习 目录 自述文件 投稿指南 Ruby图标 设置 您需要一个最新的 (2.6+) 版本的 Ruby,仅此而已。 Minitest 附带了该语言,因此您已准备就绪。 运动解剖 练习的文件存在于exercises/<slug> 。 练习的 ...

    Beginning.Ruby.From.Novice.to.Professional.3rd.Edition.1484212797

    Learn the principles behind object-oriented programming and within a few chapters create a fully functional Ruby application. You'll also gain a basic understanding of many ancillary technologies such...

    Ruby-JsonCompare返回两个JSON文件之间的差异

    JsonCompare - 返回两个JSON文件之间的差异

    ruby下将txt文件内容写入excel

    使用RUBY语言将TXT文件中的内容写入到excel中!

    ruby文件操作大全

    ruby文件操作大全,主要是DIR,FILE和文件夹类的相关操作,比较实用

    ruby rails demo

    安装sqlite3时候会提示你从链接中下载sqlite3.dll到ruby安装目录的bin文件夹下! (4)安装mysql gem install mysql2 创建项目: rails new webapp -d mysql rails server #启动服务 rails generate scaffold hello ...

    ruby-macho::nut_and_bolt:用于解析Mach-O文件的纯Ruby库

    Ruby猛男 一个用于检查和修改Mach-O文件的Ruby库。什么是Mach-O文件? 被macOS和iOS(以及其他)用作目标文件,可执行文件,动态库等的通用二进制格式。安装ruby-macho可以通过RubyGems安装: $ gem install ruby-...

    ruby开发的基本流程.doc

    Ruby开发流程涉及多个关键步骤,从环境搭建到项目部署,下面是一个大致的流程概述: Ruby开发环境搭建:首先,需要在计算机上安装Ruby开发环境。推荐使用macOS或各种发行版本的Linux作为运行环境,尽管Windows下也...

    ruby-exercises:回购以存储后端练习

    文件夹中的每个练习文件都将以注释开头,这些注释提供有关以下内容的更多详细信息: 您需要如何操作或使用此文件来完成练习。 一些练习将要求您操纵“当前”文件并运行它。 其他练习将要求您创建新文件,然后引用...

    sslkeylog:一个以NSS密钥日志格式记录SSL会话密钥的Ruby库

    SSLkeylog 一个Ruby库,它以记录来自客户端连接的SSL会话密钥。 分析网络流量时,诸如的工具可以使用此日志来解密数据。 注意:此版本的库是功能原型。 将来可能会更改实现。安装该gem使用C扩展名从Ruby OpenSSL::...

    图的建立与图的深度优先、广度优先遍历.cpp

    本资源是用C语言所写的,数据结构中图的创建及其相关的深度,广度遍历

Global site tag (gtag.js) - Google Analytics