2016-08-22 4 views
0

폴더 중 하나에 묻혀있는 특정 XML 파일을 찾으려는 디렉토리의 많은 폴더를 반복하려고합니다. 그런 다음 해당 파일의 위치를 ​​저장 한 다음 해당 파일에 대해 내 코드를 실행하고 싶습니다 (이 코드는이 코드에 포함하지 않겠습니다). 내가 여기서 묻는 것은 모든 폴더를 반복 한 다음 특정 파일을 여는 것입니다. 예 : 내 기본 폴더는 다음과 같습니다. C : \ Parsing "folder1"및 "folder2"라는 두 개의 폴더가 있습니다. 각 폴더에는 내가 관심이있는 xml 파일이 있는데, "needed.xml"이라는 말을 할 수 있습니다. 디렉토리를 통해 루프를 돌리고 그 특정 스크립트를 찾습니다. 는 당신은 내가 그 list.files 및 사용 R.폴더 루핑 및 특정 파일 찾기 R

답변

1

grepl 모든 하위 폴더

rootPath="C:\Parsing" 
listFiles=list.files(rootPath,recursive=TRUE) 
searchFileName="needed.xml" 

presentFile=grepl(searchFileName,listFiles) 


if(nchar(presentFile)) cat("File",searchFileName,"is present at", presentFile,"\n") 
+0

고마워요.하지만 제가 생각하기에 그 폴더에 폴더 1과 폴더 2의 이름을 지정해야합니다. 디렉토리에 30 개의 폴더가있을 수 있으므로 특정 파일의 모든 폴더를 자동으로 검색 할 수 있다고 생각했습니다. – user2128119

+0

하위 폴더를 통해 파일 검색이 재귀 적으로 이루어 지도록 편집되었습니다. 작동하는지 알려주세요. – OdeToMyFiddle

0

이 당신이 찾고있는 무엇인가를 재귀 적으로 볼 수 있었다 수있는 방법을 알고 계십니까?

require(XML) 

fol <- list.files("C:/Parsing") 

for (i in fol){ 
       dir <- paste("C:/Parsing" , i, "/needed.xml", sep = "") 

       if(file.exists(dir) == T){ 
              needed <- xmlToList(dir) 
              } 
       } 

이렇게하면 XML 파일을 찾아서 R로 읽어 들일 것입니다. 결과가 데이터 그 자체이거나 다른 함수/스크립트에 제공 될 수있는 데이터의 디렉토리 위치 만 원한다면 나는 당신의 질문에서 분명하지 않았습니다. 방금 위치를 원하면 'xmlToList'함수를 제거하십시오.

0

나는 이런 식으로 뭔가 (당신이 원하는 경우 filename.xml와 *의 .XML 교체) 할 것 :

list.files(path = "C:\Parsing", pattern = "*.xml", recursive = TRUE, full.names = TRUE) 

이 재귀 적 경로 C:\Parsing에서 확장 .xml을 가진 파일을 찾아서의 full path을 반환을 일치하는 파일