Using FileUtils cp_r
is usually how I copy directories, but I can't seem to exclude the base directory. This is what I wanted to work, but it doesn't:
FileUtils.cp_r "#{source_path}\\**", target_path, :verbose => true
source_path
has sub-directories I want to copy recursively. I just don't want the actual source_path
directory, just everything below it.
I tried using Dir.glob
but could not get it right.
This is a Windows copy and I know I can use xcopy
but want to know how to do it in Ruby.
You want to use source_path/.
instead of source_path/**
, as describe in the last example of the documentation
➜ fileutils ls
cp_files.rb dst source
➜ fileutils tree source
source
├── a.txt
├── b.txt
├── c.txt
└── deep
└── d.txt
1 directory, 4 files
➜ fileutils tree dst
dst
0 directories, 0 files
➜ fileutils cat cp_files.rb
require 'fileutils'
FileUtils.cp_r "source/.", 'dst', :verbose => true
➜ fileutils ruby cp_files.rb
cp -r source/. dst
➜ fileutils tree dst
dst
├── a.txt
├── b.txt
├── c.txt
└── deep
└── d.txt
1 directory, 4 files
This is what cp_files.rb looks like:
require 'fileutils'
FileUtils.cp_r "source/.", 'dst', :verbose => true