Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.ruby > #2394

Re: Pathname: moving files & directories

From Robert Klemme <shortcutter@googlemail.com>
Newsgroups comp.lang.ruby
Subject Re: Pathname: moving files & directories
Date 2011-04-06 21:07 +0200
Message-ID <903s05Flu0U1@mid.individual.net> (permalink)
References <b2265767440a64a48853a41cea71fe1a@ruby-forum.com>

Show all headers | View raw


On 06.04.2011 20:18, Simon Harrison wrote:
> This came up at work a while ago and our IT dept. said it was
> impossible. If we have the following paths:
>
> dir/customer1/file1
> dir/customer1/file2
> dir/customer1/lots more files
> dir/customer2/file1
> dir/customer2/file2
> dir/customer2/file3
> dir/customer2/obsolete/file1
> dir/customer2/oblolete/file2
> dir/customer3/file1
> dir/customer3/file2
> dir/customer3/obsolete/file1
>
> .etc
>
> how can we end up with this:
>
> /newdir/obsolete/customer2/file1
> /newdir/obsolete/customer2/file2
> /newdir/obsolete/customer3/file1
>
> .etc

Roughly something like this:

# untested

require 'pathname'
require 'fileutils'
require 'set'

base = Pathname('/newdir/obsolete')
old_dirs = Set.new

Pathname.glob('dir/*/obsolete/*').each do |pn|
   dir, file = pn.split
   customer = dir.parent.basename
   target_dir = base + customer
   target_dir.directoy? or target_dir.mkdir

   target = target_dir + file
   FileUtils.mv pn, target
   old_dirs << dir
end

old_dirs.each {|d| Dir.delete d}


> I can't really experiment at work because the IT folk would probably not
> be best pleased if I delete everything. I'm not sure what to use. I can
> get the paths easily with Dir.glob and then grep for 'obsolete'. But,
> I've no idea how to rename the paths. Any help appreciated.

Why can't you experiment at work?  You don't need to use real paths or 
you can omit the final move and delete operations.  You need to test 
your code anyway.  Can't you do it on your local machine or a virtual 
machine?

Kind regards

	robert


-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

Back to comp.lang.ruby | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Pathname: moving files & directories Simon Harrison <simon@simonharrison.net> - 2011-04-06 13:18 -0500
  Re: Pathname: moving files & directories Robert Klemme <shortcutter@googlemail.com> - 2011-04-06 21:07 +0200
  Re: Pathname: moving files & directories Jeremy Bopp <jeremy@bopp.net> - 2011-04-06 14:26 -0500
  Re: Pathname: moving files & directories Simon Harrison <simon@simonharrison.net> - 2011-04-06 15:09 -0500

csiph-web