将整个文件夹移动到另一个目录

9
我想将整个文件夹从一个目录移动到另一个目录,这是我的代码,
folder_old_path = "C:/Users/abc/Downloads/managerA"
path_new = "C:/User/abc/Desktop/managerA"
current_files = list.files(folder_old_path, full.names = TRUE)
file.copy(from = current_files, to = path_new, 
          overwrite = recursive, recursive = FALSE, copy.mode = TRUE)

然而,我遇到了这个错误信息:

Error in file.copy(from = current_files, to = path_new, overwrite = recursive, : more 'from' files than 'to' files

有任何想法如何解决?非常感谢你的帮助!


1
你确定新路径是指“User”,而不是上面的“Users”吗? - camille
path_new已经存在了吗?复制不会创建新文件夹。 - MrFlick
最终弄清楚了,需要先创建新的路径文件夹。感谢您的所有帮助! - C_Mu
4个回答

6
library(ff)
from <- "~/Path1/"            #Current path of your folder
to   <- "~/Path2/"            #Path you want to move it.
path1 <- paste0(from,"NameOfMyFolder")
path2 <- paste0(to,"NameOfMyFolder")
file.move(path1,path2)

尝试使用这段小代码。

1

看起来似乎 current_files = list.files(folder_old_path, full.names = TRUE) 这一步是不必要的。如果我对 R 文件文档 的理解是正确的,那么你应该只需要使用以下代码:

folder_old_path = "C:/Users/abc/Downloads/managerA"
path_new = "C:/User/abc/Desktop/managerA"
file.copy(from = folder_old_path, to = path_new, 
          overwrite = recursive, recursive = FALSE, copy.mode = TRUE)

如果那样不起作用,那么你就需要创建一个新的文件列表(遍历当前文件并替换列表中每个项目中的folder_old_pathfolder_new_path),然后对这些文件调用file.copy函数。
folder_old_path = "C:/Users/abc/Downloads/managerA"
path_new = "C:/User/abc/Desktop/managerA"
current_files = list.files(folder_old_path, full.names = TRUE)
new_files = # replace folder_old_path with path_new for every file in current_files
file.copy(from = current_files, to = new_files, 
          overwrite = recursive, recursive = FALSE, copy.mode = TRUE)

... 这一切都假定(当然)folder_old_pathpath_new都存在,并且您对它们具有正确的权限。

链接页面确实包含有关Windows路径的警告/注释:

不能保证这些函数将处理形式为d:path的Windows相对路径:请改用d:./path。特别地,d:不被认为是一个目录。也不支持\\?\前缀(及类似内容)。


1

最简单的方法:

file.rename(folder_old_path, path_new)

如果你想检查path_new是否已经存在,可以将上述代码扩展为:

if (dir.exists(path_new) {
  print(paste("already exists so recurively deleting path_new", path_new))
  unlink(path_new, recursive = TRUE)
}

0
在Linux上,你应该可以简单地执行以下步骤:
1)如果需要,创建OTHER_DIR。如果它是OUTPUT_DIR的子目录,则: dir.create(file.path(OUTPUT_DIR, OTHER_DIR), showWarnings = FALSE) setwd(file.path(OUTPUT_DIR, OTHER_DIR)) dir.create()如果目录已经存在,只会打印一个警告。如果你想要查看警告,请删除showWarnings = FALSE
2)如果它只是与OUTPUT_DIR同级的另一个目录,则:

dir.create(OTHER_DIR)

2) 然后移动文件(例如如果OTHER_DIR与OUTPUT_DIR在同一级别):

file.rename("C:/OUTPUT_DIR/file.csv", "C:/OTHER_DIR/file.csv")


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接