我有 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)
这将为您提供一个逻辑向量(A
和 B
中的文件为 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/