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

时间:2017-05-06 04:09:38

标签: r

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

1 个答案:

答案 0 :(得分:1)

首先,您需要列出各自目录中的文件(此处以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)

这将为您提供一个逻辑向量(TRUEA中的文件B),您可以使用它来索引所需的文件:

to_move <- flsA[!ix]

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

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

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

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

lapply (to_move,file.remove)