문제

파일을 디렉토리의 즉각적인 하위 디렉토리에 복사하는 간단한 루비 스크립트를 작성하려고합니다. 즉각적인 하위 디렉터 만 어떻게 얻을 수 있습니까?

도움이 되었습니까?

해결책

Dir.glob("**/") 현재 디렉토리 아래의 모든 경로 배열을 반환합니다. 거기에서 목록을 필터링하고 파일을 복사 할 수 있습니다. File.copy(from, to)

다른 팁

당신이 원한다고 가정합니다 즉각적인 하위 디렉터, 사용할 수 있습니다 Dir['*/'] (Micheal Sepcot과 Glenra의 답변을 결합합니다).

당신이 모든 것을 찾으려고한다면 즉각적인 하위 디렉터 (아래의 한 수준 만), 이것을 시도하십시오.

Dir.chdir("/some/path/you/want/to/check/below")
subdir_list=Dir["*"].reject{|o| not File.directory?(o)}

즉, 디렉토리를 어딘가에 변경하고, 여기에 발견 된 파일 배열을 구성하고, 디렉토리가 아닌 배열 요소를 거부하고, 결과적인 컬러 아르 레이를 반환하십시오.

아마도 루비에서 파일을 다루는 가장 좋은 방법은 Pathname. 몇 가지 파일 기반 모듈의 클래스 메소드를 하나의 사용하기위한 OOP 클래스로 결합합니다. 그래서 당신은 당신이 해야하는 것처럼 값을 메소드로 전달할 필요가 없습니다. Dir 또는 File, 당신은 객체 자체의 메소드를 호출 할 수 있습니다.

즉각적인 하위 디렉터를 인쇄하는 방법은 다음과 같습니다.

require 'pathname'

puts Pathname('some/directory').children.select(&:directory?)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top