`

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

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

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

 

 

 

 

分享到:
评论

相关推荐

    遍历文件夹并建成目录树

    在IT领域,遍历文件夹并建成目录树是一项常见的任务,尤其在文件管理、数据处理和自动化脚本编写中。这个过程涉及到操作系统层面的文件系统操作,通常通过编程语言实现。下面将详细介绍如何进行这项操作,并提供一些...

    收集的多个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中文件夹遍历的四种主要方法,这些方法各有...

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

    这个摘要在文件内容不变的情况下保持不变,因此可以用来快速比较两个文件是否相同。 下面我们将详细讨论如何使用Ruby来实现这个功能: 首先,我们需要引入`digest/md5`库,它包含了计算MD5哈希的工具。在示例代码...

    ruby复制文件夹

    在Ruby编程语言中,复制文件夹是一个常见的任务,特别是在处理文件系统操作时。本文将详细介绍两种不同的方法来实现这一功能。 ### 方法一:基于`Find`模块 ```ruby require 'rubygems' require 'ruby-debug' ...

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

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

    用ruby读excel文件生成xml文件

    标题 "用ruby读excel文件生成xml文件" 描述的是一项技术任务,即使用Ruby编程语言来处理Excel文件,并将其内容转换成XML格式。这在数据迁移、格式转换或与不支持Excel格式的应用程序进行数据交换时非常有用。Ruby库...

    txt文件合并多个文件夹内容

    本主题聚焦于“txt文件合并多个文件夹内容”,这是一个关于批量处理和整合TXT文本文件的问题。以下将详细介绍如何实现这个功能,并提供相关知识点。 首先,我们需要理解什么是TXT文件。TXT文件是一种纯文本格式,不...

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

    `JsonCompare`通过比较JSON对象的键值对,帮助开发者找出这两个文件中的不同之处,包括新增、删除和修改的元素。 在使用`JsonCompare`之前,你需要先安装这个库。如果你还没有`json-compare-master`这个压缩包,你...

    ruby文件操作,简单ppt

    这里有两个重要的参数需要关注: - **第一个参数**:表示文件的路径(可以是绝对路径也可以是相对路径)。 - **第二个参数**:文件的操作模式,不同的模式对应不同的文件操作方式。 文件的操作模式主要包括以下几种...

    ruby 目录操作详细介绍

    下面将详细介绍如何在Ruby中进行目录的创建、删除、查询、修改以及读取文件等操作。 1. 创建文件夹 Ruby提供了多种创建文件夹的方法。例如,可以使用`Dir.new`或`Dir::mkdir`来创建一个新的目录,如果没有指定完整...

    ruby实现文件对比资料

    文件对比,也称为文件差异检测,旨在识别两个文件之间的内容差异。Ruby提供了多种库和内建功能来完成这项工作,例如内置的`File`类和外部的`diff-lcs`库。 二、Ruby内建方法 1. `File.read`: 这个方法用于读取整个...

    ruby的pop3、SMTP类库说明

    本文将详细介绍这两个类库的功能和使用方法。 首先,POP3(Post Office Protocol version 3)是一种协议,用于从邮件服务器下载邮件。在Ruby中,Net::POP3类提供了对POP3协议的支持。以下是一些关键概念和方法: 1...

    ruby导出csv文件

    在`views`文件夹中,你可以创建一个`.rhtml`或`.erb`文件,如`export.csv.erb`,并使用ERB(Embedded Ruby)语法将数据插入模板: ```erb FasterCSV.generate do |csv| csv ['Name', 'Age', 'City'] @users....

    在Ruby中使用块:一份脑友好的报告(Jay McGavren)Using Blocks in Ruby: A Brain-Friendly Report (Jay McGavren)

    在Ruby中,可以使用块来处理数组遍历、文件操作或执行特定条件的代码执行,从而避免编写大量重复或复杂的代码。 2. 代码复用:通过块,程序员可以将特定的代码段抽象出来,作为参数传递给方法,这样可以重复使用同...

    Ruby on Rail 基础知识 一张纸

    ### Ruby on Rails基础知识详解 #### 一、简介 在IT领域,Ruby on Rails(简称RoR或Rails)是一种流行的Web应用程序开发框架,基于Ruby语言。它遵循MVC(模型-视图-控制器)架构模式,使得开发高效且结构化。本篇文章旨在...

    Ruby Ini文件读写

    这段代码会创建一个名为`example.ini`的文件,其中包含一个名为`Section1`的节,以及在这个节下的两个选项`Option1`和`Option2`。 3. **读取Ini文件**: 要读取已存在的INI文件,你可以使用`read`方法: ```ruby...

    ruby 读取cfg文件

    在Ruby编程语言中,读取配置文件(如cfg文件)是一项常见的任务,这通常涉及到从文件中获取特定的键值对以供程序使用。在本篇文章中,我们将深入探讨如何在Ruby中有效地读取和处理cfg文件,以及如何根据指定的键来...

    Ruby语言全面掌握:从基础语法到实战案例的一站式教程

    内容概要:本文档提供了全面的 Ruby 学习资源,包括基础语法、高级特性和实战案例。教程详述了 Ruby 的基本数据类型和块的概念;案例涉及使用 Ruby on Rails 构建 Web 博客系统和编写自动化文件处理脚本的具体步骤;...

Global site tag (gtag.js) - Google Analytics