2013-03-08 4 views
0

폴더 안에있는 모든 파일 이름을 배열에 저장하려고합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?디렉토리의 모든 파일 이름을 배열로 읽으려면 어떻게해야합니까?

+0

* 왜 WHY * 한 번에 모든 파일 이름을 읽으시겠습니까? 그것은 폴더가 수천 개의 파일을 포함 할 수 있기 때문에 확장 가능한 솔루션이 아닙니다. –

+0

apache2/sites-enabled에서 만든 .conf 파일입니다. 내 추측은 3-10 파일입니다. – Linda

+0

왜 이것이 "진짜"문제가 아닌가요? 왜 OP가 이것을 원해? 여기에 200 번 이상 유용한 것으로 표시되어 있고 받아 들여진 답변 ('Dir [ "/ path/to/search/*"]')은 유용한> 300 번 표시되어 있습니다 ... https : // stackoverflow .com/questions/1755665/all-files-from-a-ruby - 실제 **가 아닌 실제 파일로 표시하는 것이 더 좋습니다! muhaha! 당신의 힘을 사용하십시오! 누군가 내려 놔! 자기 자신에 대해 기분이 좋다! 네! – user664833

답변

3

이를 사용할 수 있습니다

files = Dir.foreach(dir).select { |x| File.file?("#{dir}/#{x}") } 

이 폴더없이 파일 이름, 즉 을 반환합니다.

files = Dir.foreach(dir) \ 
      .map { |x| File.expand_path("#{dir}/#{x}") } \ 
      .select { |x| File.file?(x) } 
+0

나는 당신의 코드가 효과가 있다고 생각한다. 오류는 내 문제입니다. 고마워. – Linda

+0

@Kate : 요청할 때 폴더 안에있는 파일 이름을 제공합니다. 전체 경로를 원할 경우 업데이트 된 답변의 두 번째 버전을 사용해야합니다. –

+0

그래, 고마워, 큰 도움이 .. – Linda

2

당신은 사용할 수 있습니다 : 당신이 전체 경로 필요한 경우

,이 같은 것을 사용

주어진 디렉토리에있는 모든 파일 이름을 포함하는 배열을 반환
files = Dir.entries(directory) 

.

자세한 내용은 Ruby Doc을 참조하십시오.

+0

"." 및 ".." –

1

files=Dir.glob(*)을 사용할 수도 있습니다.

관련 문제