2010-03-05 5 views
0

거대한 XML 파일을 노드 크기의 파일로 분할하는 split linux 명령을 사용하고 있습니다. 문제는 현재 수십만 개의 디렉토리가있는 디렉토리입니다.ruby ​​- 모든 내용을 나열하지 않고 디렉토리에서 파일 가져 오기

모든 것을 나열 할 필요없이 디렉터리에서 파일을 가져 와서 (데이터베이스로 가져 오기위한 다른 프로세스로 전달하는) 방법을 원합니다. 이게 Dir.foreach이 이미 작동하는 방법입니까? 다른 아이디어?

+0

모든 파일을 처리하려면 Dir.foreach가 올바른 해결책입니다. 부모 xml 파일의 모든 노드 파일에 고유 한 서브 디렉토리를 사용하는 것을 고려할 수 있습니다 (Linux 분할을 사용할 때). – klochner

+0

그래, 좋은 생각인데 한 파일이 다른 파일보다 훨씬 크기 때문에 부분적으로 만 문제를 해결합니다. –

답변

3

Dir.glob을 사용하면 필요한 파일을 찾을 수 있습니다. 자세한 내용은 here이지만 기본적으로 Dir.glob 'dir/*.rb'과 같은 패턴을 전달하고 해당 패턴과 일치하는 파일 이름을 다시 가져옵니다. 합리적으로 좋은 방법이라고 생각되지만 플랫폼과 구현에 따라 다릅니다.

Dir.foreach에 대해서도 이것은 효율적이어야합니다. 루프 주변의 모든 패스에 대해 전체 디렉토리를 처리해야하는 경우 걱정할 필요가 있습니다. 그러나 그것은 끔찍한 구현 일 것이고 그렇지 않습니다.

관련 문제