rubyでフォルダ構造維持しながらファイルをコピー
rubyでフォルダ構造維持しながらファイルをコピーする
xcopyみたいな形で第2引数に第1引数のディレクトリ以下のファイルをコピーする
第2引数のフォルダがなかったら作る
src,dest=ARGV[0]||"a",ARGV[1]||"a_dash" Dir.exist?(dest)||Dir.mkdir(dist) Dir.glob("#{src}/**/*"){|s| d=s.sub(/#{src}/,dest) puts s,d File.ftype(s)=="directory" ? Dir.mkdir(d) : `cp #{s} #{d}` }
まあ、このまま使うことは無いだろうからcpの部分は適宜編修する このままならcp -r の方が速い
実験データは以下のように用意した
$ mkdir -p a/b/c a/d a/e/f/g a/f/h $ touch a/A a/b/B a/b/c/C a/d/D a/e/E a/e/f/F a/f/h/H $ ls -R .: a ./a: A b d e f ./a/b: B c ./a/b/c: C ./a/d: D ./a/e: E f ./a/e/f: F g ./a/e/f/g: ./a/f: h ./a/f/h: H