我有两个文件夹(例如“A”,“B”),它们位于文件夹中(例如“输入”)。我想将“A”和“B”复制到另一个文件夹(比如“输出”)。我可以在R吗?
答案 0 :(得分:14)
将当前目录文件复制到新目录
currentfiles
是您要复制的文件列表
newlocation
是您要复制到的目录
如果您没有列出当前文件,则需要遍历您的工作目录
file.copy(from=currentfiles, to=newlocation,
overwrite = TRUE, recursive = FALSE,
copy.mode = TRUE)
这是用于删除旧文件
file.remove(currentfiles)
答案 1 :(得分:2)
我迟到了。这是我完成任务的简单方法。 在R中,
current_folder <- "C:/Users/Bhabani2077/Desktop/Current"
new_folder <- "C:/Users/Bhabani2077/Desktop/Ins"
list_of_files <- list.files(current_folder, ".py$")
# ".py$" is the type of file you want to copy. Remove if copying all types of files.
file.copy(file.path(current_folder,list_of_files), new_folder)
答案 2 :(得分:0)
我所见过的所有解决方案似乎都暗示着基于Unix的操作系统(Mac和Linux)。我认为响应对于OP无效的原因是OP可能在Windows上。
在Windows中,文件的定义就是那个文件,而Unix将文件定义为文件或目录。根据我对“文件操作” R文档的理解,我认为这可能是file.copy()
无法正常工作的原因-为“ from”字段输入到file.copy()
的参数必须是文件(而不是目录),但可以是“收件人”字段的文件或目录。
答案 3 :(得分:0)
fs 包提供了一种替代解决方案,可以准确回答原始问题
library(fs)
我已经在我的工作目录中创建了具有建议结构的“input”文件夹
fs::dir_tree()
#> .
#> +-- copy_folder.R
#> +-- copy_folder.Rproj
#> \-- input
#> +-- A
#> | +-- C
#> | \-- exampleA.txt
#> +-- B
#> | \-- exampleB.txt
#> \-- D
fs::dir_copy("input/A", "output/A")
fs::dir_copy("input/B", "output/B")
fs::dir_tree()
#> .
#> +-- copy_folder.R
#> +-- copy_folder.Rproj
#> +-- input
#> | +-- A
#> | | +-- C
#> | | \-- exampleA.txt
#> | +-- B
#> | | \-- exampleB.txt
#> | \-- D
#> \-- output
#> +-- A
#> | +-- C
#> | \-- exampleA.txt
#> \-- B
#> \-- exampleB.txt
请注意,我们在“input”文件夹包含除文件夹“A”和“B”之外的其他文件夹和文件的一般情况下工作。
如果“input”文件夹只包含文件夹“A”和“B”,一行代码就足够了:
fs::dir_copy("input", "output")
由 reprex package (v2.0.0) 于 2021 年 7 月 3 日创建