可以利用R自动执行文件迁移吗?

时间:2019-06-04 20:57:17

标签: r file-transfer

基于一些回复,我已经编辑了原始帖子以使其更加具体:)

问题-我想弄清楚如何自动执行文件迁移。

这是目录“ ... / test”中文件结构的摘录

  • 011_433

  • 9087_345

  • 新文件

文件夹011_433和9087_345中的文件带有某些字符串模式,例如文件名中带有“ B_14”或“ B_15”的文件。这些文件散布在文件夹中,因此具有“ B_14”的文件不仅位于一个文件夹中(对于具有其他模式的文件也是如此)。文件夹new_files是我希望将文件迁移到的位置,以便它们位于根据其模式命名的文件夹中,例如:

目录“ ... / test / new_files”的子目录如下:

  • B_14

  • B_15

其中每个文件夹都将包含名称与字符串名称匹配的字符串模式的文件。

到目前为止,这是我所做的工作,并且可以工作,但是我对如何自动执行此操作感到茫然,因为文件模式名称没有任何押韵或理由。

library(filesstrings)

path <- "C:/my_directory/test/"
setwd(path)

#get a list of all files in test directory sub folders that match a specific #string pattern
B_14_ <- list.files(path, pattern = "_B-14", recursive = TRUE) 

#move all the files from test into their respective folder under 'new_files'
file.move(B_14_, "C:/my_directory/test/new_files/B_14"


#repeat for the next pattern....
B_15_ <- list.files(path, pattern = "_B-15", recursive = TRUE)
file.move(B_15_, "C:/my_directory/test/new_files/B_15"

#etc.

我的问题是我可以再自动化吗?如果我有所有字符串模式的列表,可以以某种方式将其合并吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

当然,这里还有一个抽象级别:

path <- "C:/my_directory/test/"
setwd(path)
patts = c("B-14", "B-15")
dirs = sub(pattern = "-", replacement = "_", x = patts, fixed = TRUE)

for (i in seq_along(patts)) {
  files <- list.files(path, pattern = paste0("_", patts[i]), recursive = TRUE) 
  file.move(files, paste0("C:/my_directory/test/new_files/", dirs[i]"))
}