将文件夹从一个目录复制到另一个目录

时间:2015-07-27 13:55:25

标签: r file directory copying

我有两个文件夹(例如“A”,“B”),它们位于文件夹中(例如“输入”)。我想将“A”和“B”复制到另一个文件夹(比如“输出”)。我可以在R吗?

4 个答案:

答案 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 日创建