浏览 3941 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-03-21
最后修改:2009-03-30
The Goal:在指定目录下创建和当前目录一样的文档结构,可以选择复制子目录结构或者不复制子目录结构。 require 'rubygems' require 'ruby-debug' require "find" module Cz_dirtools def mkdirs_to(tar,src=Dir.getwd) #debugger if tar.class==NilClass then puts "PLZ input target directory name..." return elsif !FileTest.directory?(tar)#如果tar不是一个目录 puts ("Creating #{File.expand_path(tar)}") Dir.mkdir("#{File.expand_path(tar)}")#创建tar目录 end src=if FileTest.directory?(src) then src#如果src是一个目录名,则返回自身 else File.dirname(src)#如果src为一个文件名,则返回该文件所在目录 end #Dir.foreach可以复制目标路径第一层目录结构而不复制子目录 #~ Dir.foreach(src) do |dir| #~ if FileTest.directory?(dir) && dir!=tar && dir!='..' &&dir!='.' then #忽略自身,忽略上级目录"..",忽略本级目录"." #~ #puts dir #~ begin #~ Dir.mkdir("#{File.expand_path(tar)}/#{dir}") #~ rescue#如果该目录已存在则直接跳过否则创建该目录 #~ end #~ end #~ end #Find.find可以复制目标路径的完整目录结构,包括子目录 dirs=Array.new Find.find(src) do |dir| unless !FileTest.directory?(dir) || File.basename(dir)==tar || File.basename(dir)=='..' || File.basename(dir)=='.' || File.basename(dir)==File.basename(src)#忽略自身,忽略上级目录"..",忽略本级目录"." dirs<<dir end end #puts dirs dirs.each do |dir| begin Dir.mkdir("#{File.expand_path(tar)}/#{dir.gsub(src,'')}") rescue#如果该目录已存在则直接跳过否则创建该目录 end end end end 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-03-24
可以写成批处理或者shell嘛,更简单
|
|
返回顶楼 | |
发表时间:2008-03-24
不是说了无处不Ruby么?
|
|
返回顶楼 | |