2013-07-04 20 views
18

Sto provando a copiare una cartella con tutte le sue sottocartelle dall'origine in una cartella di destinazione. Il codice seguente non sembra farlo. Sono in grado di copiare solo i file anziché le sottocartelle utilizzandoruby ​​copy folder con sottocartelle in una posizione di destinazione

FileUtils.cp_r(Dir["/Volumes/TempData/Collects/Sasi/android/*.*"],"/Volumes/Data/Apps/android") 

Che cosa mi manca?

require 'fileutils' 
puts "operating_system" 
operating_system = gets.chomp 

    if operating_system == "android" then 
    FileUtils.cp_r(Dir["/Volumes/TempData/Collects/Sasi/android/**"],"/Volumes/Data/Apps/android") 
    puts "done" 
    elsif operating_system == "ios" then 
    FileUtils.cp_r(Dir["Volumes/Data/Apps/iOS/CX5/**"],"/Volumes/TempData/Collects/For_CS") 
    puts "done" 
    else 
    puts "do nothing" 
    end 

risposta

27

Sembra che il metodo FileUtils.copy_entry copi un albero di directory per te. Ci sono alcune informazioni nel rubydoc: http://www.ruby-doc.org/stdlib-2.0/libdoc/fileutils/rdoc/FileUtils.html#method-c-copy_entry

Ci sono un sacco di opzioni (ad esempio se per preservare la proprietà del file), ma alcuni test veloce mostra che si può solo passare le directory di origine e di destinazione in questo modo:

FileUtils.copy_entry @source, @destination 
+1

Grazie mille, funziona! – sasi

+0

Funziona anche per me. – amorphid

+0

Threadnecromancer, @sasi si prega di accettare la risposta se ha funzionato per voi. – Pred