浏览 2652 次
锁定老帖子 主题:Rubycook 学习心得
精华帖 (0) :: 良好帖 (0) :: 新手帖 (19) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-18
保存代码为 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]) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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 这么个小事还写这么一大堆代码… |
|
返回顶楼 | |
发表时间:2008-09-19
rename 's/rivers/river/' * 这么个小事还要写代码…… shell 命令 |
|
返回顶楼 | |
发表时间:2008-09-19
总不能为每个重命令写一个Ruby代码吧,呵呵。
并且这个脚本是递归的,这个目录下的目录里面的文件也会被改名字。 |
|
返回顶楼 | |
发表时间:2008-09-19
szpapas 写道 总不能为每个重命令写一个Ruby代码吧,呵呵。
并且这个脚本是递归的,这个目录下的目录里面的文件也会被改名字。 用shell的话,即使递归,也是一条命令搞定。 |
|
返回顶楼 | |