R 如何根据文件名中的日期选择目录中的文件并复制到其他文件夹

R 如何根据文件名中的日期选择目录中的文件并复制到其他文件夹,r,R,我在tempfiles1文件夹中有一组具有以下名称的文件: ASC05012019R.DBF ASC05012019R.NTX ASC05012019H.DBF ASC05012019H.NTX ASC05012019F.DBF ASC05012019F.NTX ROS12012019R.DBF ROS12012019R.NTX ROS12012019H.DBF ROS12012019H.NTX ROS12012019F.DBF ROS12012019F.NTX BAL25012019R.DBF

我在tempfiles1文件夹中有一组具有以下名称的文件:

ASC05012019R.DBF
ASC05012019R.NTX
ASC05012019H.DBF
ASC05012019H.NTX
ASC05012019F.DBF
ASC05012019F.NTX
ROS12012019R.DBF
ROS12012019R.NTX
ROS12012019H.DBF
ROS12012019H.NTX
ROS12012019F.DBF
ROS12012019F.NTX
BAL25012019R.DBF
BAL25012019R.NTX
BAL25012019H.DBF
BAL25012019H.NTX
BAL25012019F.DBF
BAL25012019F.NTX
ROK20012019R.DBF
ROK20012019R.NTX
ROK20012019H.DBF
ROK20012019H.NTX
ROK20012019F.DBF
ROK20012019F.NTX
每个文件名都有3个不同的字母开头,但后面都有一个日期,格式为ddmmyyyy

如上图所示,文件夹中还有其他文件,如R.NTX、H.NTX或F.NTX等,但我只查找扩展名为R.DBF、H.DBF和F.DBF的文件

我希望从一个日期范围(比如05012019到22012019)中进行选择,并将所有R.DBF、H.DBF和F.DBF文件复制到另一个文件夹tempfiles2

我已能够指定我的文件夹:

current_folder <- "G:/m/HR/tempfiles1"
new_folder <- "G:/m/HR/tempfiles2"
但是我不知道如何选择日期

使用05012019到22012019之间的日期进行上述示例的最终结果是将正确的文件复制到tempfiles2文件夹:

ASC05012019R.DBF
ASC05012019H.DBF
ASC05012019F.DBF
ROS12012019R.DBF    
ROS12012019H.DBF    
ROS12012019F.DBF       
ROK20012019R.DBF    
ROK20012019H.DBF    
ROK20012019F.DBF    
试试这个

#Define start and end date to select from files
start_range <- as.Date("05012019", format = "%d%m%Y")
end_range <- as.Date("22012019",  format = "%d%m%Y")

#Get full path of file names to copy
file_path <- list.files(current_folder, ".DBF", full.names = TRUE)

#Get date from the filenames to compare
list_date <- as.Date(substr(list.files(current_folder, ".DBF"),
              4,11), format= "%d%m%Y")

#Select the files which lie in the range of dates
files_to_copy <- file_path[list_date %in% seq(start_range, end_range, by = "1 day")]

#Copy the files
file.copy(files_to_copy, new_folder)
以下是一种方法:

制作一些要使用的文件 文件[1]正确 >[15]真的 在正则表达式模式中使用集合来获取具有正确结尾的文件 文件[1]ASC05012019F.DBF ASC05012019H.DBF ASC05012019R.DBF >[4]BAL250119F.DBF BAL2501219H.DBF BAL2501219R.DBF >[7]ROK20012019F.DBF ROK20012019H.DBF ROK20012019R.DBF >[10]Ros12019F.DBF Ros12019H.DBF Ros12019R.DBF 提取并解析日期 文件日期[1]2019-01-05 2019-01-05 2019-01-05 2019-01-05 2019-01-25 2019-01-25 > [6] 2019-01-25 2019-01-20 2019-01-20 2019-01-20 2019-01-12 > [11] 2019-01-12 2019-01-12 基于日期的子集 通缉文件为.Date'2019-01-05'&文件日期[1]ROK20012019F.DBF ROK20012019H.DBF ROK20012019R.DBF >[4]Ros12019F.DBF Ros12019H.DBF Ros12019R.DBF 创建一个新目录 新目录[1]正确 检查他们是否在那里 list.files新目录 >[1]ROK20012019F.DBF ROK20012019H.DBF ROK20012019R.DBF >[4]Ros12019F.DBF Ros12019H.DBF Ros12019R.DBF
这太棒了。但是,对于复制的每个文件,它都会在控制台中输出TRUE。有什么办法可以避免吗?@Matt是的,你可以用不可见的、不可见的file.copyfiles\u to\u copy,new\u folderI刚刚看到了这个,所以现在就试试看。
file.copy(file.path(current_folder,list_of_files), new_folder)
ASC05012019R.DBF
ASC05012019H.DBF
ASC05012019F.DBF
ROS12012019R.DBF    
ROS12012019H.DBF    
ROS12012019F.DBF       
ROK20012019R.DBF    
ROK20012019H.DBF    
ROK20012019F.DBF    
#Define start and end date to select from files
start_range <- as.Date("05012019", format = "%d%m%Y")
end_range <- as.Date("22012019",  format = "%d%m%Y")

#Get full path of file names to copy
file_path <- list.files(current_folder, ".DBF", full.names = TRUE)

#Get date from the filenames to compare
list_date <- as.Date(substr(list.files(current_folder, ".DBF"),
              4,11), format= "%d%m%Y")

#Select the files which lie in the range of dates
files_to_copy <- file_path[list_date %in% seq(start_range, end_range, by = "1 day")]

#Copy the files
file.copy(files_to_copy, new_folder)