FileUtils.cp_r

Hi,

I have all of the program "atk" in one directory.

I want to recursively copy this to /usr.

This commandline works in bash shell:

  cp -r /Programs/Atk/Current/* /usr/

These examples in Ruby do not work:

  FileUtils.cp_r '/Programs/ATK/Current/', '/usr'
  FileUtils.cp_r '/Programs/ATK/Current/', '/usr/'
  FileUtils.cp_r '/Programs/ATK/Current', '/usr/'

(They all copy Current/ instead of what is inside Current/* )

And using '*' like so

  FileUtils.cp_r '/Programs/ATK/Current/*', '/usr/'

does neither work.

Does anyone have an idea how to grab the * content
under Current/ and copy that to /usr ?

···

--
Posted via http://www.ruby-forum.com/.

I was able to solve it with a 4 year old post of Nobu :slight_smile:

One has to add the '/.'

I think the docu could mention this:

  FileUtils.cp_r( '/Programs/ATK/Current/'+"/.", '/usr/')

Works.

···

--
Posted via http://www.ruby-forum.com/.

I was able to solve it with a 4 year old post of Nobu :slight_smile:

One has to add the '/.'

I think the docu could mention this:

The docs *do* say exactly that, I think:

  # If you want to copy all contents of a directory instead of the
  # directory itself, c.f. src/x -> dest/x, src/y -> dest/y,
  # use following code.
  FileUtils.cp_r 'src/.', 'dest'

m.

···

Marc Heiler <shevegen@linuxmail.org> wrote:
--
matt neuburg, phd = matt@tidbits.com, Matt Neuburg’s Home Page
Leopard - http://www.takecontrolbooks.com/leopard-customizing.html
AppleScript - http://www.amazon.com/gp/product/0596102119
Read TidBITS! It's free and smart. http://www.tidbits.com

I think the docu could mention this:

FileUtils.cp_r( '/Programs/ATK/Current/'+"/.", '/usr/')

there is a whole well documented paragraph of code on it (two in fact, if you count the glob one):

···

On Jul 18, 2008, at 13:40 , Marc Heiler wrote:

--------------------------------------------------------- FileUtils#cp_r
     cp_r(src, dest, options = {})
------------------------------------------------------------------------
     Options: preserve noop verbose dereference_root remove_destination

     Copies +src+ to +dest+. If +src+ is a directory, this method copies
     all its contents recursively. If +dest+ is a directory, copies
     +src+ to +dest/src+.

     +src+ can be a list of files.

       # Installing ruby library "mylib" under the site_ruby
       FileUtils.rm_r site_ruby + '/mylib', :force
       FileUtils.cp_r 'lib/', site_ruby + '/mylib'

       # Examples of copying several files to target directory.
       FileUtils.cp_r %w(mail.rb field.rb debug/), site_ruby + '/tmail'
       FileUtils.cp_r Dir.glob('*.rb'), '/home/aamine/lib/ruby', :noop => true,
:verbose => true

       # If you want to copy all contents of a directory instead of the
       # directory itself, c.f. src/x -> dest/x, src/y -> dest/y,
       # use following code.
       FileUtils.cp_r 'src/.', 'dest' # cp_r('src', 'dest') makes src/dest,
                                          # but this doesn't.