r - 比较 2 个文件夹中的文件名,并将不匹配的文件移动到单独的文件夹中

标签 r

我有 2 个文件夹 A 和 B,分别包含 5000 个和 6000 个文件。文件夹 B 是文件夹 A 的子集。我需要比较这两个文件夹并将不匹配的文件移动到单独的文件夹 C。如何在 R 中通过仅比较文件名并移动它们来完成此操作

最佳答案

首先,您需要列出各自目录中的文件(此处以 A 的目录为例:

flsA <- list.files(dirA,patt,full.names=TRUE, recursive=FALSE) 

使用patt,您可以指定模式字符串,例如文件扩展名,例如".txt$" (注意末尾的 $ 告诉 R 这是文件名的结尾)。

如果您想要包含子目录,可以将recursive设置为TRUE

full.names 选项提供完整路径,对于以后移动文件是必需的。

列出两个目录后,您可以使用函数 basename%in% 比较包含的文件:

ix <- basename(flsA) %in% basename(flsB)

这将为您提供一个逻辑向量(AB 中的文件为 TRUE),然后您可以将其用于索引文件你想要:

to_move <- flsA[!ix]

我使用 ! 运算符来反转逻辑向量,因为我想要不在两个目录中的文件。

最后,您可以lapply您想要的功能到您的文件,例如:

lapply(to_move, function(x) file.copy(x,new.dir_C)

正确复制后,您可以使用 file.remove 删除原始文件:

lapply (to_move,file.remove)

关于r - 比较 2 个文件夹中的文件名,并将不匹配的文件移动到单独的文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43816624/

相关文章:

r - R 中的条件交叉表

r - 如何在R中的数据框中创建具有相同ID的四个点的组合?

RStudio:右括号被覆盖

r - R 中复杂的非等值合并

r - 在 Debian VM 上安装 Shiny 的服务器

r - 函数 observe() 和 reactiveValues() 是如何工作的?

r - 如何在 r 中针对 "gambling"问题和返回概率编写模拟?

r - ggplot中的控制点边框厚度

function - 试图将 col.name 附加到向量上

r - 如何在 Linux Mint 中升级 R?