首页 > 解决方案 > 列出具有特定名称的文件并复制到目录

问题描述

我在“<code>D:/”目录中有几个 XML 文件,我想将这些文件的一部分转移到另一个目录,例如,D:/FILES_XML

D:/目录包含以下文件:

2019010112_20009726.xml
2019010113_20009725.xml
2019010208_20009734.xml
2019010210_20009741.xml
2019010210_20009742.xml

我列出的目录如下:

setwd ("D: /")
files <- list.files (pattern = ".xml")

在这 5 个文件中,我只想传输到D:/FILES_XML目录中的 2 个文件。但是,由于过程内部故障,这些文件的名称是不同的,因为我只能看到部分名称(我只看到下划线“_”后面的内容)。因此,我想要的 2 个文件为我描述如下:

20009741
20009742

那么,知道我只有他们名字的一部分,我将如何传输这两个文件?

我想要的结果在目录中D:/FILES_XML

2019010210_20009741.xml
2019010210_20009742.xml

标签: rxmlloops

解决方案


只需调整正则表达式模式匹配:

files <- list.files(pattern = "(_20009741|_20009742).xml")

或者,对于许多文件,使用paste折叠成单个正则表达式字符串:

f <- c(20009741, 20009742)
m <- paste0("(", paste(f, collapse="|"), ").xml")
files <- list.files(pattern = m)

然后用于file.copy复制文件:

file.copy(paste0(getwd(), "/", files), paste0(getwd(), "/FILES_XML/", files),
          overwrite = TRUE)

推荐阅读