`
szpapas
  • 浏览: 105090 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Rubycook 学习心得

阅读更多
学习Ruby CookBook,看到里面的字符串替换的功能不错,于是就简单的改造了一下,用来对文件名进行批量修改了。

保存代码为 rn.rb 放在Windows 目录下面。

rn "string1" "string" "filename"

比如:

F:\Mapdata\gzgis\Test>rn rivers river  ..\
Renaming ..\Test/rivers.prj to ..\Test/river.prj
Renaming ..\Test/rivers.dbf to ..\Test/river.dbf
Renaming ..\Test/rivers.shx to ..\Test/river.shx
Renaming ..\Test/rivers.shp to ..\Test/river.shp
Renaming ..\Test/rivers_region.shx to ..\Test/river_region.shx
Renaming ..\Test/rivers_region.shp to ..\Test/river_region.shp
Renaming ..\Test/rivers_region.prj to ..\Test/river_region.prj



require 'find'
module Find
  def rename(*paths)
    unrenamable = []
    find(*paths) do |file|
      next unless File.file? file 
      path, name = File.split(file)
      new_name = yield name

      if new_name and new_name != name
        new_path = File.join(path, new_name)
        if File.exists? new_path
          unrenamable << file
        else
          puts "Renaming #{file} to #{new_path}" if $DEBUG
          File.rename(file, new_path)
        end
      end
    end
    return unrenamable
  end
  def change_extensions(extension_mappings, *paths)
    rename(*paths) do |file|
      base, extension = file.split(/(.*)\./)[1..2]
      new_extension = extension
      extension_mappings.each do |re, ext|
        if re.match(extension)
          new_extension = ext
          break
        end
      end
      "#{base}.#{new_extension}"
    end
  end
  
  def change_names(name_mappings, *paths)
    rename(*paths) do |file|
      name, extension = file.split(/(.*)\./)[1..2]
      new_name = name
      name_mappings.each do |re, name|
				new_name.gsub!(re,name)
      end
      "#{new_name}.#{extension}"
    end
  end
  module_function(:change_names)
  module_function(:change_extensions)
  module_function(:rename)
end


$DEBUG = true

Find.change_names({"#{ARGV[0]}" => "#{ARGV[1]}" }, ARGV[2])
分享到:
评论
4 楼 robbin 2008-09-19  
szpapas 写道
总不能为每个重命令写一个Ruby代码吧,呵呵。
并且这个脚本是递归的,这个目录下的目录里面的文件也会被改名字。


用shell的话,即使递归,也是一条命令搞定。
3 楼 szpapas 2008-09-19  
总不能为每个重命令写一个Ruby代码吧,呵呵。
并且这个脚本是递归的,这个目录下的目录里面的文件也会被改名字。
2 楼 wosmvp 2008-09-19  
rename 's/rivers/river/' *


这么个小事还要写代码……
shell 命令
1 楼 gigix 2008-09-18  
Dir["**/*rivers*"].each do |file_name|
  new_file_name = file_name.gsub(/rivers/, 'river')
  FileUtils.mv file_name, new_file_name
end

这么个小事还写这么一大堆代码…

相关推荐

    需要系数法负荷计算软件.zip

    需要系数法负荷计算软件

    kettle插件-MongoDB Delete2.0

    kettle 用于(按条件)删除MongoDB集合数据的插件。 只需要放入kettle 客户端安装目录的 plugins目录下,然后重启kettle客户端即可。

    建筑电气负荷计算小软件.zip

    建筑电气负荷计算小软件

    电线选型、线管选型小型计算软件.zip

    电线选型、线管选型小型计算软件

    有限网卡驱动包,直接上传下载就行

    啦啦啦啦

    Theano-0.8.0.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    临床信息.csv

    临床信息.csv

    Windows 命令行五子棋程序,用于向 STM32 移植Gobang.zip

    五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    现金收支月报表Excel图表.xlsx

    现金收支月报表Excel图表.xlsx

    接地电阻计算软件.zip

    接地电阻计算软件

    多人联机五子棋小游戏muti-Gomoku-master.zip

    五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    spring aop实现接口参数变更前后对比和日志记录

    spring aop实现接口参数变更前后对比和日志记录完整代码,拿到项目代码,只需要做数据库连接的修改即可运行起来使用,代码案例详细,真是可靠,代码原文地址:https://blog.csdn.net/zhangcongyi420/article/details/138748857?spm=1001.2014.3001.5501

    setuptools-58.5.1.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    控制台界面字符版五子棋,有AI,可人机对战,在dev-c++下编写Renju-AI.zip

    五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    母亲节祝福html源码.zip

    母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福

    二叉树遍历算法的应用hahhhahaha

    二叉树遍历算法的应用hahhhahaha

    变压器DGA溶解气体数据(357组)

    包含六种故障类型: 中低温过热 高温过热 低能放电 高能放电 局部放电 正常 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111需要直接下载就可

    桌面滚动字幕软件(2.0)一款可以实现无限循环自定义循环内容的电脑屏幕桌面走字的软件.rar

    桌面滚动字幕软件(2.0)是一款功能强大的电脑屏幕桌面走字工具。它能够实现无限循环自定义循环内容,让用户可以将想要展示的文字内容在电脑屏幕上滚动显示。无论是在办公、学习、展示、宣传等场景,都能发挥重要作用。 这款软件具有以下特点和优势: 1. 自定义内容:用户可以自由编辑、添加、删除和修改滚动字幕的内容,满足个性化需求。 2. 无限循环:字幕内容可以无限循环播放,确保重要信息持续传达。 3. 多种字体、颜色和大小:支持多种字体、颜色和大小的选择,让滚动字幕更具吸引力。 4. 灵活的滚动速度:用户可以根据需求调整滚动速度,实现流畅的滚动效果。 5. 定时功能:可设置滚动字幕的自动隐藏和显示时间,提高屏幕的使用效率。 6. 简洁易用:界面简单直观,操作方便,无需专业知识即可快速上手。 7. 兼容性强:适用于各种Windows操作系统,如Windows 7、Windows 8、Windows 10等。 8. 占用资源低:软件运行过程中,占用极低的系统资源,不影响电脑的正常使用。

    【财务管理】毕马威的财务分析内部培训资料(21P).ppt

    【财务管理】毕马威的财务分析内部培训资料(21P).ppt

    setuptools-69.3.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

Global site tag (gtag.js) - Google Analytics