如何根据电子表格的标准选择特定的文件,然后从一个目录复制到R中的另一个目录?



我有一个任务,要求我使用CSV电子表格中存储文件名的特定列,例如:

tbody> <<tr>
文件名
ca - 001
wv - 001
ma - 001

使用提供的代码,您想要匹配的模式的选择将在csvfile$File.Name中。

我假设源目录可能非常大。而不是执行缓慢的正则表达式来匹配子字符串(虽然我们知道确切的文件名),和/或获得完整的文件列表(这也很慢),我将只在复制它们之前查找是否确实需要的文件名存在:

source <- "C:/Users/53038/MovePDF/Test_From"
target <- "C:/Users/53038/MovePDF/Test_To"
csvfile <- read.csv('C:/Users/53038/MovePDF/Master.csv')

# add .pdf suffix
toCopy <- paste0(csvfile$File.Name,'.pdf')
# add source directory path
toCopy <- file.path(source,  toCopy)
# optional: extract only the existing files from toCopy. You can skip this step if you're sure they exist and/or you don't mind receiving errors
toCopy <- toCopy[file.exists(toCopy)]
# make it so
file.copy(toCopy, target, overwrite = T)

我最好始终在文件名中保留.pdf扩展名,在源CSV中也是如此。如果扩展名是。pdf、。pdf等,那么在区分大小写的文件系统(几乎所有的Linux安装,很少有macOS或Windows)上会有问题。

最新更新