我有2个文件夹A和B,分别有5000和6000个文件。文件夹B是文件夹A的子集。我需要比较这两个文件夹并将不匹配的文件移动到单独的文件夹C.如何通过比较文件名并移动它们来在R中完成此操作
答案 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)
这将为您提供一个逻辑向量(TRUE
和A
中的文件B
),您可以使用它来索引所需的文件:
to_move <- flsA[!ix]
我正在使用!
运算符来反转逻辑向量,因为我想要不在两个目录中的文件。
最后,你可以lapply
你想要的文件功能,例如:
lapply(to_move, function(x) file.copy(x,new.dir_C)
正确复制后,您可以使用file.remove
删除原件:
lapply (to_move,file.remove)