거대한 XML 파일을 노드 크기의 파일로 분할하는 split linux 명령을 사용하고 있습니다. 문제는 현재 수십만 개의 디렉토리가있는 디렉토리입니다.ruby - 모든 내용을 나열하지 않고 디렉토리에서 파일 가져 오기
모든 것을 나열 할 필요없이 디렉터리에서 파일을 가져 와서 (데이터베이스로 가져 오기위한 다른 프로세스로 전달하는) 방법을 원합니다. 이게 Dir.foreach
이 이미 작동하는 방법입니까? 다른 아이디어?
거대한 XML 파일을 노드 크기의 파일로 분할하는 split linux 명령을 사용하고 있습니다. 문제는 현재 수십만 개의 디렉토리가있는 디렉토리입니다.ruby - 모든 내용을 나열하지 않고 디렉토리에서 파일 가져 오기
모든 것을 나열 할 필요없이 디렉터리에서 파일을 가져 와서 (데이터베이스로 가져 오기위한 다른 프로세스로 전달하는) 방법을 원합니다. 이게 Dir.foreach
이 이미 작동하는 방법입니까? 다른 아이디어?
Dir.glob
을 사용하면 필요한 파일을 찾을 수 있습니다. 자세한 내용은 here이지만 기본적으로 Dir.glob 'dir/*.rb'
과 같은 패턴을 전달하고 해당 패턴과 일치하는 파일 이름을 다시 가져옵니다. 합리적으로 좋은 방법이라고 생각되지만 플랫폼과 구현에 따라 다릅니다.
Dir.foreach
에 대해서도 이것은 효율적이어야합니다. 루프 주변의 모든 패스에 대해 전체 디렉토리를 처리해야하는 경우 걱정할 필요가 있습니다. 그러나 그것은 끔찍한 구현 일 것이고 그렇지 않습니다.
모든 파일을 처리하려면 Dir.foreach가 올바른 해결책입니다. 부모 xml 파일의 모든 노드 파일에 고유 한 서브 디렉토리를 사용하는 것을 고려할 수 있습니다 (Linux 분할을 사용할 때). – klochner
그래, 좋은 생각인데 한 파일이 다른 파일보다 훨씬 크기 때문에 부분적으로 만 문제를 해결합니다. –