programing

R을 사용하여 지정된 확장자를 가진 모든 파일 나열

padding 2023. 6. 7. 22:11
반응형

R을 사용하여 지정된 확장자를 가진 모든 파일 나열

저는 R에 매우 처음이며 ArcGIS를 사용하여 만든 일련의 .dbf 테이블을 반복하고 일련의 그래프를 생성하기 위해 R 스크립트를 업데이트하는 작업을 하고 있습니다.

C:\Scratch라는 디렉토리에 .dbf 파일이 모두 들어 있습니다.그러나 ArcGIS가 이러한 테이블을 만들 때 .dbf.xml 파일도 포함됩니다.이러한 .dbf.xml 파일을 파일 목록에서 제거하고 반복합니다.정규 표현식을 검색하고 실험해봤지만 소용이 없었습니다.제가 사용하는 기본 표현입니다(모든 다양한 실험 제외).

files <- list.files(pattern = "dbf")

누가 저에게 길을 알려주실 수 있나요?

files <- list.files(pattern = "\\.dbf$")

$끝은 문자열 끝임을 의미합니다. "dbf$"작동하기도 하지만, 추가\\.(.정규식에서 특수 문자이므로 이스케이프해야 함) 확장자가 있는 파일만 일치시키십시오..dbf(예를 들어, 예를 들어, .adbf파일).

정규 표현식 대신 글러브를 사용하여 끝으로 끝나는 파일 이름만 선택합니다..dbf

filenames <- Sys.glob("*.dbf")

찾을 패턴 고정"\\.dbf"다음을 사용하여 문자열의 끝에$문자:

list.files(pattern = "\\.dbf$")

전체 경로가 있는 파일 목록을 제공합니다.

  Sys.glob(file.path(file_dir, "*.dbf")) ## file_dir = file containing directory

저는 정교한 정규 표현을 잘 사용하지 못하기 때문에 다음과 같은 방법으로 작업을 수행할 것입니다.

files <- list.files()
dbf.files <- files[-grep(".xml", files, fixed=T)]

첫 번째 줄에는 작동 중인 dir의 모든 파일이 나열됩니다.두 번째는 ".xml"을 포함하는 모든 항목을 삭제합니다. (grep은 'files' 벡터에서 해당 문자열의 인덱스를 반환합니다. 음의 인덱스로 부분 집합을 설정하면 벡터에서 해당 항목이 제거됩니다.)일반적으로 펄 스타일의 화려한 정규 표현 없이 조잡한 패턴 매칭을 수행하기를 원하기 때문에 grep 함수에 대한 "fixed" 인수는 나의 변덕일 뿐이며, 이는 저에게 놀라움을 줄 수 있습니다.

그런 솔루션은 단순히 제 교육의 단점을 반영하는 것으로 알고 있지만 초보자에게는 유용할 수도 있습니다 =) 적어도 쉽습니다.

또 다른 옵션은 fs::dir_ls 함수입니다.와일드카드 패턴(예:"*.dbf") 또는 다음과 같은 정규식 패턴을 사용합니다."dbf$".

fs::dir_ls(dir, recurse = FALSE, glob = "*.dbf")
fs::dir_ls(dir, recurse = FALSE, regex = "dbf$")

언급URL : https://stackoverflow.com/questions/4876813/using-r-to-list-all-files-with-a-specified-extension

반응형