2013-10-15 9 views
4

FileUtils 사용 cp_r은 일반적으로 디렉토리를 복사하는 방법이지만 기본 디렉토리는 제외 할 수 없습니다. 이것은 내가 일을 원하는 것을, 그러나 그렇지 않습니다 :어떻게 재귀 적으로 디렉터리 내용을 복사하고 원본 디렉터리 자체를 제외 할 수 있습니까?

FileUtils.cp_r "#{source_path}\\**", target_path, :verbose => true 

source_path 내가 재귀 적으로 복사 할 하위 디렉토리가 있습니다. 난 그냥 실제 source_path 디렉토리, 그 아래 모든 것을 원하지 않아.

Dir.glob을 사용해 보았지만 제대로 처리하지 못했습니다.

이것은 Windows 사본이며 xcopy을 사용할 수 있지만 Ruby에서 수행하는 방법을 알고 싶습니다.

require 'fileutils' 
FileUtils.cp_r "source/.", 'dst', :verbose => true 

답변

7

당신은 이것을 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 

의 마지막 예에서 설명하는 바와 같이, source_path/** 대신 source_path/.를 사용하고자하는 것은 같은 cp_files.rb는 모습입니다 . 소스 & dest의 전체 경로를 제공하십시오. 원본 부모 디렉터리를 제외하고 원본에서 대상으로 재귀 적으로 복사합니다.

자세한 내용은 check out the documentation을 참조하십시오.

+0

빈 디렉토리가 재귀 적으로 복사하려는 경우 재귀 복사본에서 무시되지 않도록'.keep' 파일을 추가하는 것이 가장 좋습니다. – lfender6445

-1

fileutils.copy_entry 유틸리티를 사용하십시오 :

+0

이 링크가 질문에 대답 할 수 있지만, 여기에 대한 답변의 필수적인 부분과 참조 용 링크를 제공하십시오. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [리뷰에서] (리뷰/저품절 게시물/18192584) – LuFFy