[ruby] 디렉토리의 폴더 목록 가져 오기
루비가있는 특정 디렉토리에 존재하는 폴더 목록을 어떻게 얻습니까?
Dir.entries()
가까이 보이지만 폴더로만 제한하는 방법을 모르겠습니다.
답변
Jordan은 가깝지만 예상 Dir.entries
하는 전체 경로를 반환하지 않습니다 File.directory?
. 이 시도:
Dir.entries('/your_dir').select {|entry| File.directory? File.join('/your_dir',entry) and !(entry =='.' || entry == '..') }
답변
나는 이것이 더 유용하고 사용하기 쉽다는 것을 알았습니다.
Dir.chdir('/destination_directory')
Dir.glob('*').select {|f| File.directory? f}
현재 디렉토리의 모든 폴더를 제외 .
하고 ..
.
폴더를 간단하게 사용하는 재귀하는 **
대신에 *
.
Dir.glob
라인도에 전달 될 수 Dir.chdir
블록으로 :
Dir.chdir('/destination directory') do
Dir.glob('*').select { |f| File.directory? f }
end
답변
제 생각 Pathname
에는 일반 문자열보다 파일 이름에 훨씬 더 적합합니다.
require "pathname"
Pathname.new(directory_name).children.select { |c| c.directory? }
그러면 해당 디렉토리에있는 모든 디렉토리의 배열이 Pathname 객체로 제공됩니다.
문자열을 갖고 싶다면
Pathname.new(directory_name).children.select { |c| c.directory? }.collect { |p| p.to_s }
directory_name
절대적 이라면 이 문자열도 절대적입니다.
답변
특정 디렉토리 아래의 모든 폴더를 재귀 적으로 찾습니다.
Dir.glob 'certain_directory/**/*/'
비재 귀적 버전 :
Dir.glob 'certain_directory/*/'
참고 : Dir.[]
같은 작품 Dir.glob
.
답변
directory = 'Folder'
puts Dir.entries(directory).select { |file| File.directory? File.join(directory, file)}
답변
당신은 사용할 수 있습니다 File.directory?
으로부터 FileTest
파일이 디렉토리인지 여부를 알아 모듈. 이것을 결합하면 Dir.entries
멋진 라이너가됩니다.
directory = 'some_dir'
Dir.entries(directory).select { |file| File.directory?(File.join(directory, file)) }
편집 : ScottD의 수정에 따라 업데이트되었습니다.
답변
이것으로, 당신은 배열을 얻을 수 있습니다 재귀적인 방법 으로 당신의 디렉토리 , subdirectories , subsubdirectories 에 대한 전체 경로 . 이 코드를 사용하여 이러한 파일을 파일 안에로드했습니다 config/application
.
Dir.glob("path/to/your/dir/**/*").select { |entry| File.directory? entry }
또한 우리는 지루한 다룰 필요가 없습니다 .
및 ..
더 이상. 그 (것)들을 다루기 위하여 받아 들여진 대답이 필요했습니다.
